提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

今天在对项目进行安全单元测试时发现的,主要是PHP在处理404页面时向用户展示所请求的URL不可访问的消息那儿的问题。The Request URL...这里直接读取的$SERVER[]变量,导致不怀好意者有机会在URL中构造XSS跨站脚本,其实这里只需要过滤一下即可,但是说明“永远不要相信用户的输入”这条安全守则的重要性,所有来自客户端的数据都要经过严格过滤,并保证最小数据要求,比如某模块只需求字母字符串,不过你把数字传过去也没有问题,但是严格来说在过滤时就应该过滤掉所有非字母的字符。

XSS也是前几年接触到的新的攻击技术,在这之前也就知道个SQL注入攻击,安全一直是个老生常谈的话题,不过我们往往注重某一点时会忽视另外一点,回顾过去的项目,几乎或多或少会存在XSS跨站漏洞,最经典的就是比如访问delete.asp?id=1就会删除id=1的数据记录,攻击者可以构造<img src="http://example.com/delete.asp?id=1" />的代码,然后诱使你访问,比如邮件什么的,当你访问时,即使没有任何操作,记录号为1的记录已经被删除了。XSS的另一个严重的问题就是Session会话劫持,攻击者会尝试劫持合法用户的会话ID,一旦会话劫持成功,攻击者就可以以合法登录者身份为所欲为了。

随着电子商务的兴起,网络安全越来越受到重视,除了严格的测试检查自身网站程序外,还要做好服务器的安全工作,近几年来VPS(Virtual Private Server 虚拟专用服务器)的兴起,更加要求了这一点,一般服务器操作系统除了经常打好补丁外,还要关闭不必要的端口,做好安全日志的记录,部署好防火墙设施。