QQ 1640076782

2010年06月20日

PHP网站安全

Filed under: phper — 标签:, , , — lijianbin @ 9:14 上午

在做购物网店和外贸企业站的维护时,考虑到一下几点的网站安全:

1.  PHP功能

a:  全局变量注册 ,带来的安全隐患: 1, 它会增加安全漏洞的数量 2,隐藏了数据的来源,与开发者需要随时跟踪数据的责任相违背  。 建议register_globals 关闭,用$_GET,$_POST取而代之,虽然不怎么方便,但是消除了安全隐患。

b:错误报告 。 建议这样设置,

ini_set(‘error_reporting’, E_ALL | E_STRICT); //错误报告级别
ini_set(‘display_errors’, ‘Off’); //关闭错误报告提示
ini_set(‘log_errors’, ‘On’); //错误报告日志
ini_set(‘error_log’, ‘/usr/local/apache/logs/error_log’);//出错日志保存路径

2. 原则

a. 深度防范  b.最小权限 c. 尽量做到程序简单化 d.暴露最小化

3.方法

a.平衡风险与可用性 b.跟踪数据 c.过滤输入(1.识别输入2过滤输入3区分已过滤及被污染数据)  d。输出转义(识别输出,输出转义,区分已转义和未转义数据)

4.表单及URL

a .语义URL攻击 b.文件上传攻击 c.跨站脚本攻击 d.跨站请求伪造(用验证码可以降低) e.欺骗表单提交(正确过滤输入)

f.HTTP请求欺骗(输入过滤)

5.数据库安全

a 权限暴露(不用文本文件存储敏感数据)及SQL注入(对输入数据进行过滤,对存储到数据库的数据进行转义,两者发生SQL注入攻击的必要条件 )

6. 会话与 Cookies

cookie盗窃、会话数据暴露、会话固定、及会话劫持

总结: 写一个安全的PHP站点,做好,过滤输入(1.识别输入2过滤输入3区分已过滤及被污染数据)   输出转义(识别输出,输出转义,区分已转义和未转义数据) 这两点,可以防范90%的攻击。

参考资料:PHP安全基础