以下那种方法最简单?
A.打开safe_mode
B.用open_basedir指定允许的文件夹
C.用自定义函数指定PHP可以访问的目录
D.设置文件系统权限,让PHP只能访问允许的目录
E.以上都不对,无法限制PHP的访问目录
10.上传文件时,能否确保客户端浏览器不会上传大于指定容量的文件?
A.能
B.不能
11.你的PHP以CGI的形式运行在Linux+Apache
系统的cgi-bin文件夹中。如果有人打开以下URL将发生什么?
/cgi-bin/php?/etc/passwd
A./etc/passwd目录下的文件都会被显示出来,造成安全隐患
B.操作系统会检查Apache是否允许打开/etc/passwd目录
C./etc/passwd字符串作为参数传给了脚本
D.什么都不会发生。CGI模式下的PHP将自动拒绝此次访问
E.PHP尝试把/etc/passwd作为
PHP脚本进行解释
12.尽管并不彻底,但以下哪些方法能识别并防范代码中的安全隐患?(选择最合适的答案)
A.查阅PHP手册中提到的安全隐患
B.任何脚本执行失败的情况都写入日志
C.保持更新最新的PHP版本,尤其是解决了安全问题的那些
D.使用第三方PHP包时,了解并修正其中的安全问题
E.以上都对
13.当网站发生错误时,该如何处理?
A.应该向用户显示错误信息以及导致该错误的相关技术信息,并且网站管理员要记录这个错误
B.需要记录该错误,并向用户致歉
C.应该向用户显示错误信息以及导致该错误的相关技术信息,以便用户把错误信息汇报给网站管理员
D.把用户
引导回主页,让用户不知道发生了错误
E.以上都不对
14. 在什么情况下,以下脚本才是安全的? 复制PHP内容到剪贴板
PHP代码:
$newfunc = create_function('$a', 'return $a * {$_POST['number]};”);
$newfunc(10);
?>
A.任何时候都安全。最坏的情况只不过是匿名函数newfunc()返回了一个数字
B.当register_globals打开时
C.什么时候都不安全。匿名函数newfunc()允许用户更改数学式的运行,将造成安全隐患
D.什么时候都不安全。匿名函数newfunc()允许用户在服务器上执行任意代码,将造成安全隐患
E.只在allow_url_fopen打开时安全
15.以下哪种PHP安装方式有很高的安全隐患,并且运行效率也最低?
A.Apache共享模块
B.Apache的编译模块
C.CGI
D.IIS下的ISAPI模块
答案速查
1:D
2:C
3:ABC
4:BC
5:B
6:CE
7:CD
8:ABC
9:B
10:B
11:D
12:E
13:B
14:D
15:C
答案详解
1.正确答案是D。虽然其他选项在一定程度上也是正确的,但破解安全
问题的最简单的方法还是验证外部数据。无论是来自用户提交的表单还是本地服务器环境,任何第三方数据都应该进行验证,以确保其符合程序需要。
2.答案是C。这段代码绝对不安全!事实上,当register_globals打开时,这个安全问题十分常见。问题出在$isAdmin变量上:尽管它是一个布尔值,只有当用户是管理员时才会被赋值,而其他情况下不会赋值。但由于register_globals是打开的,恶意用户只要通过URL传递一个GET变量就可以获得管理员权限:
example/action.ph ... a=foo&;isAdmin=1
3.正确答案是A,B和C。A和B说的都是相似的PHP安全问题,恶意用户可以通过篡改URL来修改$username变量。如果用户这么做了,并且allow_url_fopen是打开的,PHP将下载某台非信任的远程服务器上的script.txt文件,并当作本地PHP脚本执行。另一个常见但不那么严重的隐患是,把一个用户的输入传递给另一个用户。比如在论坛或电子邮件中,不过滤HTML标签。这将允许恶意用户使用
JavaScript脚本攻击查看这段内容的用户,造成跨站攻击或者浏览器bug——可怜的用户因为你的过错而受害。
4.正确答案是B和C。过滤非信任来源的数据听起来是个好主意,但实际上任何外部数据都有可能造成安全问题,并危及你的脚本。当register_globals打