我对web开发相对来说是个新手。就在今天,我的老师告诉我在我的项目中实现一种避免跨服务器脚本的方法。我搜索了很多,找到了关于xss_clean的东西,但是我不知道如何使用和实现它。任何与此相关的指南或文章都是受欢迎的。或者如果你想在这里解释一下,这将保存我很多额外的努力,我将非常感谢你。我正在使用CodeIgniter框架,所以请任何相关的文章将是好的。
xss_clean
CodeIgniter
bvjveswy1#
XSS漏洞的问题在于你不能只应用一个 * 修复 *,这些漏洞可能出现在你写的每一件小事中。当攻击者能够将HTML插入您网站访问者的页面时,就会发生XSS。根据代码的内容,攻击者可以将访问者发送到他的钓鱼网站或窃取他的会话。不难想象如何防止HTML注入:你只需要对所有用户输入进行HTML转义。但是在实践中,可能会有很多这样的操作,你的系统只有在最薄弱的环节才是安全的。
lo8azlld2#
从我的经验来看,CI的XSS相当不错--我遇到过这样的情况,它确实删除了我想要的东西,如果您没有预料到的话,调试起来会很痛苦。我从来没有能够“轻松地”绕过它,也没有读到过任何漏洞(CI社区相当大)。详情请看下面的链接,这可能会帮助你http://blog.astrumfutura.com/2011/05/codeigniter-2-0-2-cross-site-scripting-xss-fixes-and-recommendations/也读这个http://htmlpurifier.org/
2izufjch3#
要删除xss攻击,您可以执行以下操作:1.您需要从post和get值中删除不需要的标记(如“script“)。1.从post和get值中删除meta-characters。
post
get
script
meta-characters
nwwlzxa74#
一个非常简短和简单答案是使用下面的代码行,其中您提交了控制器文件中的详细信息。
$data = $this->security->xss_clean($data);
这里数据可以是单个值,如果有多个记录,则可以是数组。您查询的另一个附加项。使用以下内容来防止sql注入
$username = $this->input->post('username'); $query = 'SELECT * FROM subscribers_tbl WHERE user_name = '. $this->db->escape($email); $this->db->query($query);
watbbzwu5#
我已经实现了这个功能来防御XSS攻击:
public static function protectArrayAgainstXSS(&$arr) { $changed = false; foreach ($arr as $index => $a) { if (is_array($a)) { $changed = $changed || Common::protectArrayAgainstXSS($arr[$index]); } else if ($a !== null) { $changed = $changed || ($arr[$index] === strip_tags($a)); $arr[$index] = strip_tags($a); } } return !$changed; }
5条答案
按热度按时间bvjveswy1#
XSS漏洞的问题在于你不能只应用一个 * 修复 *,这些漏洞可能出现在你写的每一件小事中。
当攻击者能够将HTML插入您网站访问者的页面时,就会发生XSS。根据代码的内容,攻击者可以将访问者发送到他的钓鱼网站或窃取他的会话。
不难想象如何防止HTML注入:你只需要对所有用户输入进行HTML转义。但是在实践中,可能会有很多这样的操作,你的系统只有在最薄弱的环节才是安全的。
lo8azlld2#
从我的经验来看,CI的XSS相当不错--我遇到过这样的情况,它确实删除了我想要的东西,如果您没有预料到的话,调试起来会很痛苦。我从来没有能够“轻松地”绕过它,也没有读到过任何漏洞(CI社区相当大)。
详情请看下面的链接,这可能会帮助你http://blog.astrumfutura.com/2011/05/codeigniter-2-0-2-cross-site-scripting-xss-fixes-and-recommendations/
也读这个
http://htmlpurifier.org/
2izufjch3#
要删除xss攻击,您可以执行以下操作:
1.您需要从
post
和get
值中删除不需要的标记(如“script
“)。1.从
post
和get
值中删除meta-characters
。nwwlzxa74#
一个非常简短和简单答案是使用下面的代码行,其中您提交了控制器文件中的详细信息。
这里数据可以是单个值,如果有多个记录,则可以是数组。
您查询的另一个附加项。使用以下内容来防止sql注入
watbbzwu5#
我已经实现了这个功能来防御XSS攻击: