标准答案我就不知道了,只是我个人的理解大概是这个方面要注意:
创新互联公司是一家专注于成都网站设计、成都网站建设与策划设计,清流网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:清流等地区。清流做网站价格咨询:18982081108
1 [POST/GET]页面参数传值/字符串输入/数据入库等类似动作都要做好严格的危险字符过滤处理.
2 相关PHP的I/O操作,需要注意限制权限,文件名或目录名或内容都要做好过滤处理.
3 敏感信息(如PASSWORD/银行帐号等)不要依赖COOKIE,SESSION,最好读表,并尽量缓存读表数据.
4 注意对网站根目录及下面所有子目录及文件的权限控制与保护,不要让配置文件/系统信息等文件暴露.
5 要完全屏掉所有出错提示,或者能捕获所有出错并重新定制输出,以防报错信息泄露你的网站及相关文件路径,MYSQL字段/网站环境等.
6 所有对库表的写入与读取操作都需要做好访问来路限制/同IP同内容读写间隔限制/并验证POST与GET的指定标识KEY的有效性等这些安全动作.
7 有类似文件下载/或文本流下载等功能的,尽量不要在URL里面直接调用目标文件地址的方式来做,最好是传ID或是指定的NAME标识.
8 MYSQL 的用户最好分开,不要用ROOT用户来连接MYSQL,另建专用用户,并限制死此用户的权限,只能操作指定的库,最好去掉此用户的命令行导入导出的权限等这些危险的权限.
可以采用以下几点措施。
(1)在用户数据进入数据库之前使用addslashes()函数过滤,可以进行一些字符的转义,并过滤掉可能引起数据库问题的字符。可以使用stripslashes()将数据返回到原始形式。
(2)在php.infi中开启magic_quotes_gpc和magic_quotes_runtime指令。它们可以自动的添加和过滤斜杠,前者主要用于格式化GET,POST,和cookie变量,后者用于过滤进出数据库的数据。
(3)当在system()或者exex()函数中使用用户输入数据作为参数时,必须使用escapeshellcmd()。用来避免怀有恶意的用户强迫系统运行某些命令。
(4)可以使用stip_tags()从一个字符串中去掉HTML和PHP标记,这样可以避免用户将恶意节本植入到用户的数据中。
(5)可以使用htmlspecialchars(),可以将字符专程它们的HTML等价实体。例如,将被转换成lt; ,该函数可以将任何脚本转换成无害的字符。
总之,在使用用户的数据时,一定要小心,原则即是不要相信用户输入的任何数据,必须要进行过滤和转换。
string mysql_real_escape_string ( string unescaped_string [, resource link_identifier])
本函数将 unescaped_string 中的特殊字符转义,并计及连接的当前字符集,因此可以安全用于 mysql_query()。
注: mysql_real_escape_string() 并不转义 % 和 _。
例子 1. mysql_real_escape_string() 例子
?php
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?
以上例子将产生如下输出:
Escaped string: Zak\'s and Derick\'s Laptop
if (!get_magic_quotes_gpc())//如不美观没有开启的话{ /****需要对这几个数组,遍历,注重数组多维的情形,addslashes($str)就可以 $_GET $_POST $_COOKIE $_REQUEST ****/}