上述关于XSS攻击的防护非常简单,但是不包含用户的所有标记,同时有上百种绕过过滤函数提交javascript代码的方法,也没有办法能完全阻止这个情况。
目前,没有一个单一的脚本能保证不被攻击突破,但是总有相对来说防护程度更好的。一共有两个安全防护的方式:白名单和黑名单。其中白名单更加简单和有效。
一种白名单解决方案就是SafeHTML,它足够智能能够识别有效的HTML,然后就可以去除任何危险的标签。这个需要基于HTMLSax包来进行解析。
安装使用SafeHTML的方法:
1、前往http://pixel-apes.com/safehtml/?page=safehtml 下载最新的SafeHTML
2、将文件放入服务器的classes 目录,这个目录包含所有的SafeHTML和HTMLSax库
3、在自己的脚本中包含SafeHTML类文件
4、建立一个SafeHTML对象
5、使用parse方法进行过滤
<?php /* If you're storing the HTMLSax3.php in the /classes directory, along with the safehtml.php script, define XML_HTMLSAX3 as a null string. */ define(XML_HTMLSAX3, ''); // Include the class file. require_once('classes/safehtml.php'); // Define some sample bad code. $data = "This data would raise an alert <script>alert('XSS Attack')</script>"; // Create a safehtml object. $safehtml = new safehtml(); // Parse and sanitize the data. $safe_data = $safehtml->parse($data); // Display result. echo 'The sanitized data is <br />' . $safe_data; ?>
SafeHTML并不能完全防止XSS攻击,只是一个相对复杂的脚本来检验的方式。
未经允许不得转载:任鹏个人博客 » 使用SafeHTML防止XSS攻击

