快速业务通道

PHP安全编程法则

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25

标有 (*) 的检查项目表示该项是针对相关问题的根本解决方法,应当尽最大努力去完成这些内容。 未标 (*) 的项目,表示该项并不能完全消除安全隐患,只是说通过这种方法可以避免发生安全问题。

SQL注射
(*) 在组合SQL语句时要使用SQL变量绑定功能
(*) 如果数据库不提供变量绑定,那么需要对构成SQL的所有变量进行转义
不要将错误信息原封不动地显示在浏览器中。
为访问数据库的用户设置适当的权限。
操作系统命令行注射
(*) 避免使用能启动shell命令的语言
使用的语言如果允许启动shell命令,则需要对该功能的参数种的所有变量进行检查,确保只包含合法的操作
不检查路径名参数/目录遍历
(*) 不要将外部传进来的参数直接作为文件名来使用
(*) 将打开文件的操作限制在固定的目录中,并禁止文件名中包含路径
为Web服务器上的文件设置正确的访问权限
检查文件名
会话管理的问题
(*) 用难以推测的内容作为会话ID
(*) 不要在URL中保存会话ID
(*) 为https协议中使用的cookie设置secure属性
(*) 登录成功后生成新的会话
(*) 登录成功后,在会话ID之外再生成一个秘密信息,每次访问页面时都检查之
不使用固定值作为会话ID
将会话ID保存到Cookie中时,要设置有效期限
跨站脚本攻击(XSS)
不允许输入HTML内容时的解决方法
(*) 输出到页面上的所有内容都要转义
(*) 输出URL时仅允许以“http://”或“https://”开头的URL
(*) 不要动态生成<script>…</script>的内容
(*) 不要从外部网站读入样式表
检查输入内容
允许输入HTML内容时的解决方法
(*) 解析输入的HTML内容,生成解析树,然后提取其中的非脚本部分
使用脚本删除输入的HTML内容中的相关字符串
通用解决方法
(*) 应答的HTTP头重指定Content-Type的charset属性
为避免Cookie情报泄漏,应禁止Trace方法,并对所有Cookie设置HttpOnly属性
跨站请求伪造(CSRF)
(*) 所有页面都通过POST来访问,在前一页面的hidden中随机生成一个信息,提交后的页面检查该信息,正确时才予以执行
(*) 执行业务之前再次要求输入密码
(*) 确认Referer是否正确,只有正确时才执行
执行重要操作时,向预先设置的邮件地址中发送邮件
HTTP头注射
(*) 不直接输出HTTP头,而使用运行环境提供的头信息输出API
(*) 无法使用API时,要禁止输入的头信息中的换行
删除所有外部输入中的换行
邮件盗用(通过某种手段使邮件发送到攻击者指定的地址)
(*) 不使用外部参数作为邮件头信息
必须用外部参数设置头信息时,要删除其中的危险字符。
版权声明:可以任意转载,但转载时必须标明原作者charlee。
原始链接:http://tech.idv2.com/2008/04/19/secure-website-checklist/
具体的应用策略参考:PHP 实践 Security Checklist

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号