PHP学习笔记5 - 安全事务

屏蔽用户输入


建立一个安全应用网站的原则之一是 绝不可相信用户的任何输入,将用户数据输入到文件或者数据库之前,要一直屏蔽此数据或者通过系统执行的命令传输它。

 

1. 使用addslashes()在用户数据进入数据库之前过滤该数据。过滤掉可能引起数据库问题的字符。可以使用stripslashes()将数据返回到它的原始形式。

 

2. 可以在php.ini配置文件中开启magic_quote_gpc和magic_quotes_runtime的指令。功能同上,magin_quote_gpc格式化GET、POST和cookie变量;magic_quotes_runtime格式化进出数据库的数据。

 

3. 当传递用户数据system()或者exec()时,必须使用函数escapeshellcmd()。该函数可以避免任何怀有恶意的用户输入强迫系统运行某些特定命令的字符。

 

4. 可以使用strip_tags()从一个字符串中去掉HTML和PHP标记。

 

5. 可以使用htmlspecialchars()将字符转换成他们的HTML等价实体。如将“<”转换成“&It;”。该函数可以将任何脚本标记转换成无害字符。

 

提供安全存储

 

3种不同类型的存储数据(HTML或PHP文件,与脚本相关的数据和MySQL数据)存储在同一磁盘的不同地方。

 

不允许用户在Web层次目录中修改或创建新的文件。

 

如果脚本需要有写入文件的权限,要在Web服务器的目录树结构以外创建一个目录。所创建的脚本和数据不要混在一起。

 

当写入重要数据时需要对数据进行加密,并且解密数据的密钥和软件必须存储在另一台机器上。MySQL中设置合适的用户访问权限。

 

当脚本程序使用其他扩展名时(如.inc),应该把这样的文件放到网络之外,设定服务器不发送这种扩展名的文件。

 

 

 

posted @ 2008-07-27 19:44  东捣CY  阅读(288)  评论(2编辑  收藏  举报