登录

个人网站跨站脚本攻击漏洞解决方案

网站建设 maolai 1366次浏览 0个评论

前天无聊,用360网站在线安全检测对个人网站检测了一下,发现存在严重的漏洞页面,其中就有一个跨站脚本攻击漏洞,说到底个人网站漏洞多数是服务器设置与网站程序漏洞问题,在互联网又有哪个网站能100%安全呢?对于一些高级黑客来说网站或多或少都有一些漏洞。

360漏洞检测报告

一、什么是跨站脚本攻击漏洞

跨站脚本攻击漏洞,英文名称Cross Site Scripting,简称CSS又叫XSS。Web 站点中的脚本不预先加以清理直接将用户输入(通常是参数值)返回, 当在响应页面中返回用户输入的 JavaScript 代码时,浏览器便会执行该代码。攻击者往往利用该原理向网页中插入恶意代码,并生成恶意链接诱使用户点击。当用户点击该连接时,便会生成对 Web 站点的请求,其中的参数值含有恶意的JavaScript代码。如果Web站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行,达到攻击者的目的。

二、跨站脚本攻击(XSS)危害

Web站点中所包含的脚本直接将用户在HTML页面中的输入(通常是参数值)返回,而不预先加以清理。如果脚本在响应页面中返回由 JavaScript 代码组成的输入,浏览器便可以执行此输入。因此,有可能形成指向站点的若干链接,且其中一个参数包含恶意的 JavaScript 代码。该代码将在站点上下文中(由用户浏览器)执行,这使得该代码有权访问用户在该站点中具有访问权的cookie,以及站点中其他可通过用户浏览器访问的窗口。

攻击依照下列方式继续进行:攻击者诱惑合法用户单击攻击者生成的链接。 用户单击该链接时,便会生成对于 Web 站点的请求,其中的参数值含有恶意的 JavaScript 代码。 如果 Web 站点将这个参数值嵌入在响应的 HTML 页面中(这正是站点问题的本质所在),恶意代码便会在用户浏览器中运行。

三、如何解决360漏洞检测的跨站脚本攻击漏洞

方案一:

1)过滤用户输入的内容,检查用户输入的内容中是否有非法内容。如<>(尖括号)、"(引号)、 '(单引号)、%(百分比符号)、;(分号)、()(括号)、&(& 符号)、+(加号)等。

2)严格控制输出

可以利用下面这些函数对出现xss漏洞的参数进行过滤

1、htmlspecialchars() 函数,用于转义处理在页面上显示的文本。

2、htmlentities() 函数,用于转义处理在页面上显示的文本。

3、strip_tags() 函数,过滤掉输入、输出里面的恶意标签。

4、header() 函数,使用header("Content-type:application/json"); 用于控制 json 数据的头部,不用于浏览。

5、urlencode() 函数,用于输出处理字符型参数带入页面链接中。

6、intval() 函数用于处理数值型参数输出页面中。

7、自定义函数,在大多情况下,要使用一些常用的 html 标签,以美化页面显示,如留言、小纸条。那么在这样的情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法的字符。

各语言示例:

PHP的htmlentities()或是htmlspecialchars()。

Python的cgi.escape()。

ASP的Server.HTMLEncode()。

ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library

Java的xssprotect(Open Source Library)。

Node.js的node-validator。

方案二:使用开源的漏洞修复插件。( 需要站长懂得编程并且能够修改服务器代码 )

二种解决方案对于不懂编程的小白站长来说等于白说,如要修复只能付费给企业服务商解决了。对于360网站安全检测报告参考一下就好了,有的不必当真。大家有什么看法,欢迎交流。


本文由maolai编辑整理发布,转载请注明个人网站跨站脚本攻击漏洞解决方案
喜欢 (0)
[maolai]
分享 (0)
maolai
关于作者:
无折腾,不生活。一个爱折腾,爱分享的90后,欢迎你认识我,我是MAOLAI。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址