[Zend权威认证试题讲解]第十一章 - 编写安全的PHP程序
PHP太强大、太容易了,因此开发者常常忘记Web安全相关的问题。5DqkL[ K!~+S抛开重要性不看,安全问题往往是网站中最容易被人忽视的一个部分。不幸的是,有很多种方法可以从内部或外部危害系统的安全,你必须不断的找出并修补这些潜在的危险因素。
在进行安全检测时,有很多需要强调的问题——不止是与安全直接相关的,还包括许多其他的内容。c,}6X\ V ?NDy
要编写安全的程序,首先必须掌握一些基础技术,这样你才能应付本章的题目。
问题
1.以下哪种方法能防止你的PHP程序遭受外部入侵?gf$?'HQ7^$M_0F3z8h
6R'd`o]H
A.使用复杂的加密算法
B.保护数据库密码5e;O}4i.Hv D t
C.如果有可能的话,使用SSL
D.验证输入h5KH7?&[ye8H7bRj
E.只使用来源可信的输入}7DE(KC*Q m*h%[lj \
C`W#JG[
'Oe OwQ*r
2.假设$action和$data变量用来接受用户输入,并且register_globals是打开的。以下代码是否安全?[code]
<?php C6N$P Q5c_x"d
if(isUserAdmin()) { $isAdmin = true; }
$data = validate_and_return_input($data);
switch($action)
{
case 'add':
addSomething($data);
break; P!QAD\)E ]h
case 'delete':
if($isAdmin) {K!DmZ:]
deleteSomething($data);6R#@|l2sp^$q$ie
} Cs\5c^$U
break;
case 'edit':!lR(]kP;l*]V C
if($isAdmin) {
editSomething($data);G%tF2C Bi]"Xn{
}
break;k:Ig i j)K
default:
print "Bad Action.";
}
?>
[/code]A.安全。在执行受保护的操作前先检查$isAdmin是否为trueMqk'iYkay
B.不安全。没有确认$action是不是合法输入
C.不安全。$isAdmin可以通过register_globals被篡改5f"LpyNbt
D.安全。因为它验证了用户数据$data
E.A和B