[Zend权威认证试题讲解]第十一章 - 编写安全的PHP程序
PHP太强大、太容易了,因此开发者常常忘记Web安全相关的问题。 Ojx\?:OqI抛开重要性不看,安全问题往往是网站中最容易被人忽视的一个部分。不幸的是,有很多种方法可以从内部或外部危害系统的安全,你必须不断的找出并修补这些潜在的危险因素。k(zst8E-kr#V
在进行安全检测时,有很多需要强调的问题——不止是与安全直接相关的,还包括许多其他的内容。^lml6H(S`[
要编写安全的程序,首先必须掌握一些基础技术,这样你才能应付本章的题目。3Dk'@6{M {*w`'FN ]d
]9Is;}7xP6Av H[
问题7\h1PR_
1.以下哪种方法能防止你的PHP程序遭受外部入侵?? IP$i-e(F1e
h$D;uy0J|A|
A.使用复杂的加密算法
B.保护数据库密码
C.如果有可能的话,使用SSL`"_+RQ3uJi6Kq.h
D.验证输入,G5I+\A3vw9R
E.只使用来源可信的输入;l&w;J:GUYs:}Z`
:qS)_7BV%s.J+|
(C}!ezV0jzI
2.假设$action和$data变量用来接受用户输入,并且register_globals是打开的。以下代码是否安全?[code] g-t!C7q\SkVO
<?php
if(isUserAdmin()) { $isAdmin = true; }a4j"x:c4hw4sN:h
$data = validate_and_return_input($data);
switch($action)$M'H;WJQ
{?beZc
case 'add':/t'mx!lHB9JJB)qz
addSomething($data);
break;&}l d Rk5o(J4A
case 'delete':3Z0}:d*eZ
if($isAdmin) {(nnpW)Zi!f
deleteSomething($data);
}
break;lu;c@ D WVI
case 'edit':
if($isAdmin) {)Z0d4n8k'U {h~)Z
editSomething($data);:H:R PDC
}'JH4wt a8}A,_{
break;
default:NzF7{;QWFH
print "Bad Action.";
}:e#py,zv4y0}2mz&Z,p
?>l'~t-\6n
[/code]A.安全。在执行受保护的操作前先检查$isAdmin是否为trueq yQjq#x@
B.不安全。没有确认$action是不是合法输入.W&]0R"L6i-K
C.不安全。$isAdmin可以通过register_globals被篡改,C V[+nq_6SRAX'\ F2M
D.安全。因为它验证了用户数据$data
E.A和B!c d`:]0l.d+n