8
十/08
0

PHP Architect’s Guide to PHP Security [2]



White List Validation (白名单验证)
Being Careful with File Uploads (文件上传时要小心)
File Content Validation (文件内容验证)
Accessing Uploaded Data (访问上传数据)
The Dangers of Magic Quotes (Magic Quotes的危险性)
Magic Quotes Normalization (Magic Quotes正规化)
Validating Serialized Data (验证序列化数据)
External Resource Validation (外部资源验证)

Assumption is the enemy of security and making assumptions about user input is a sure way to allow an attacker to subvert your code. 又一次强调开发者的假设所带来的后果。对开发者来说,普遍假设selection box和check box以及radio button和hidden字段值是不用验证的,这就完全错了,
因为恶意用户可以拷贝html表单代码并且修改后来进行恶意提交任意数据。比起黑名单的概念,我们最好还是选择白名单,也就是说我们给出合法的值,然后验证是否合法;而不是给出不合法的值,验证值是否非法。显然后者不如前者来得安全。这里作者给出一个例子,说明了这个问题:
$months = array(“January”, “February”, /* … */);
if (empty($_POST[‘month’]) || !in_array($_POST[‘month’], $months)) {
   exit(“Quit hacking, you’re not a lumberjack!”);
}

关于文件上传:如果你的应用程序不会使用到文件上传的特性,你可以编辑php.ini文件来禁止文件上传。
file_uploads=off
upload_max_filesize指令可以控制上传的单个文件最大值,以字节为单位。默认值为2M
post_max_size指令限制了当表单以POST方式提交的数据大小。通常情况下,这个值我们应该设置地比上面那个file_uploads稍微大一点点。如果你可能用到多文件上传,根据需要自行调整。默认值为8M。

(待补充。。。)


相关文章

关键字: ,
评论 (0) Trackbacks (0)

没有评论

发表评论

No trackbacks yet.