Web站点防止跨站脚本攻击(XSS)的解决方案
跨站脚本攻击就是指恶意攻击者向网页中插入一段恶意代码,当用户浏览该网页时,嵌入到网页中的恶意代码就会被执行,盗取浏览器cookie,威胁网站的安全。
跨站脚本攻击漏洞,英文名称Cross Site Scripting,简称CSS又叫XSS。恶意攻击者向Web网站页面中插入一段恶意代码,当用户浏览该页面时,嵌入到Web页面中的恶意代码就会被执行,从而达到恶意攻击者的特殊目的。
Web站点中所包含的脚本直接将用户在HTML页面中的输入(通常是参数值)返回,而不预先加以清理。如果脚本在响应页面中返回由JavaScript代码组成的输入,浏览器便可以执行此输入。 因此,有可能形成指向站点的若干链接,且其中一个参数包含恶意的JavaScript代码。该代码将在站点上下文中(由用户浏览器)执行,这使得该代码有权访问用户在该站点中具有访问权的cookie,以及站点中其他可通过用户浏览器访问的窗口。
1、攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。用户单击该链接时,便会生成对于Web站点的请求,其中的参数值含有恶意的JavaScript代码。如果Web站点将这个参数值嵌入在响应的HTML页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。
2、比如有一天打开一个网站,突然弹出一个窗口提示叫你登陆,你以为是这个网站让你登陆的,当你输入账户密码以后你的所有操作都被黑客记录了,还有小白问“盗取浏览器cookie有什么用”,黑客盗取你的浏览器cookies以后,可以利用你的cookie登陆你在特定网站或者论坛的账户。
3、网站常见的存在跨站的地方多半都在留言本,搜索,评论。这些地方,特别是有留言和评论的地方要注意,网站这两个地方存在跨站,黑客可以直接在这两个地方提交跨站攻击脚本,登陆后台查看留言和评论以后就被攻击了。
解决方案概述:
1、通过输入。过滤用户输入的内容,检查用户输入的内容中是否有非法内容。如<>(尖括号)、"(引号)、 '(单引号)、%(百分比符号)、;(分号)、()(括号)、&(&符号)、+(加号)等。
2、通过输出。严格控制输出,输出时对XSS漏洞的参数进行过滤。
Java语言的处理方案参考:
1、XSS攻击详述 http://www.what21.com/sys/view/java_javaweb-summary_1456896125462.html
2、XSS模拟攻击 http://www.what21.com/sys/view/java_javaweb-summary_1456896125462.html
3、XSS解决方案 http://www.what21.com/sys/view/java_javaweb-summary_1456896125971.html
PHP语言的处理方案:
1、使用htmlspecialchars()、htmlentities()、strip_tags()、header()、urlencode()和intval()等函数来处理。
2、通过自定义函数,通过实现黑白名单的方法,过滤掉非法的XSS敏感字符。
Python语言的处理方案:
1、使用python语言提供的函数:escape("")、replaceAll("")等函数来处理。
2、使用开源的漏洞修复插件处理XSS。
ASP.NET的处理方案:
1、使用Server.UrlEncode("")、Server.UrlDecode("")、Server.HtmlEncode("")和Server.HtmlDecode("")等函数来处理。
2、功能更强的Microsoft Anti-Cross Site Scripting Library,微软提供的反跨站脚本库来处理。
其他的解决方案:
1、如安装第三方应用的防火墙。
2、如果是虚拟主机、云主机,则购买相应的安全产品提供服务。
评论