http://hi.baidu.com/micropoor

//2011-11-22 星期二
//插入篇----Php程序员角度看安全
//今天全局我们站在Php程序员的角度看待问题
//以及解决问题
结论:一切的输入都是有害的.
//参考Php安全新闻早8点(2011-11-12 星期六)
http://hi.baidu.com/micropoor/blog/item/f200689bf907af56d1135ec6.html
既然是一切的输入都是有害的,那么就从输入输出讲起。
##################################################
1.接受任何变量的时候,都请记住,是有害的开始。确定用户输入的变量类型,如整形,字符串型。可以使用(int)或者(intval)
函数强制转换。字符串可以考虑使用addslashes 或 mysql_escape_string(如果考虑数据库编码请连接数据库后使用mysql_real_escape_string更安全。
针对GBK等编码,使用该函数能够防范目前很多GBK编码爆出的注入漏洞)
2.数据在输出时候的处理。可以考虑strip_tags做过滤。或者使用 htmlspecialchars 进行html标签转义并且安全输出。切记做好部分标签的转义输出
例如:<script><iframe><object><style>等。
3.关闭关闭 register_global 选项,初始化所有变量,防止调用未定义变量notice错误。
4.开启 safe_mode,同时设置 open_basedir, safe_mode_include_dir,safe_mode_exec_dir 等选项
5.关闭一些危险函数。或者不使用函数。例如:eval、phpinfo&nbsp;&nbsp;
6.move_uploaded_file来操作上传的文件,不是使用copy图方便。
7.库文件(.inc)和数据文件(数据信息,配置信息,sqlite数据库等)不要与web目录放在一起
8.包含文件的时候,记得这两个函数。realpath 和 basename
9.关于urldecode函数参考:Php安全新闻早8点(2011-11-18 星期五)
http://hi.baidu.com/micropoor/blog/item/f187eae306a5acc9b21cb151.html
10.安全使用intval函数
11.总结:
注意执行系统命令函数:system, passthru, shell_exec, exec, popen, proc_open
注意文件包含与生成函数:require, require_once, include, include_once, file_get_contents, file_put_contents, fputs, fwrite,
注意代码执行与加密函数:eval, assert, call_user_func,base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13&nbsp;&nbsp;

    结论:安全就是细心的转义.