跨站脚本攻击(XSS) ### 描述: > 跨站脚本攻击漏洞,英文名称Cros.../>

跨站脚本攻击漏洞

PHP 2018-01-19 浏览(3575 评论(0

漏洞类型:

跨站脚本攻击(XSS)

描述:

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

危害:

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

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

解决方案:

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

2.严格控制输出,可以利用下面这些函数对出现xss漏洞的参数进行过滤

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

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

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

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

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

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

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

打赏

如果此文对你有所帮助,请随意打赏鼓励作者^_^

黄信强博客