跨站点脚本(xss)_保护您的应用程序免受跨站点脚本(XSS)攻击

跨站点脚本攻击的最常见技术之一是将恶意代码注入网页。 本简短教程中的代码片段向您展示了如何使用转义序列,以使任何注入的代码都无法运行。

注意:本教程是Usha Ladkani的developerWorks教程的缩写版,“ 通过对HTML响应进行编码来防止跨站点脚本攻击 ”。 有关更多详细信息,请参见该教程。

跨站点脚本攻击如何工作

在跨站点脚本(XSS)攻击中,攻击者将恶意代码注入到合法的网页中,然后该网页运行客户端脚本。 当用户访问受感染的网页时,该脚本将下载到用户的浏览器中。

假设攻击者将此HTML字符串注入网页:

<script>alert("You've been attacked!")</script>

当浏览器加载网页时,它将运行脚本作为呈现页面的一部分。 在这种情况下,脚本将运行,并且用户会看到一个弹出警报,提示“您已受到攻击!”。

您的辩护:在服务器端Java™应用程序的变量中编码HTML

为了确保不会将恶意脚本代码注入到您的页面中,最好的防线是在所有变量字符串显示在页面上之前对其进行编码。 编码仅意味着将每个潜在危险的字符转换为HTML实体。

转义后,上面HTML字符串将如下所示:

清单1.转义HTML
&lt;script&gt;alert(&quot;You&apos;ve been attacked!&quot;)&lt;/script&gt;

轮到你! 尝试更改清单1中的代码

尝试图标
单击“运行”按原样执行代码。 您应该看到与清单1相同的输出。然后更改变量unescapedText以查看会发生什么。 (请记住,您需要使用反斜杠转义所有双引号: \" )。
显示结果

摘要

跨站点脚本编写仍然是攻击用户计算机的最常用方法之一。 但是,您可以在很大程度上阻止攻击者使用恶意代码感染Web应用程序的能力。 在编写应用程序时,请确保将所有变量输出编码到页面中,然后再将其发送到用户的浏览器。

还有一件事

请注意,Java String.toCharArray()方法将破坏包含表情符号和其他特殊字符的字符串。 如果您真的想深入了解此主题,请先阅读Unicode Basic Multilingual Plane上的Wikipedia文章


翻译自: https://www.ibm.com/developerworks/java/library/se-prevent-cross-site-scripting-attacks/index.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值