首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSS攻击防护

XSS攻击防护
EN

Stack Overflow用户
提问于 2010-05-06 21:38:54
回答 5查看 6.9K关注 0票数 5

我正在开发一个web应用程序,用户可以在其中响应博客条目。这是一个安全问题,因为它们可以发送危险的数据,这些数据将呈现给其他用户(并由javascript执行)。

他们不能格式化他们发送的文本。没有“粗体”,没有颜色,什么都没有。只是简单的文本。我想出这个正则表达式来解决我的问题:

代码语言:javascript
复制
[^\\w\\s.?!()]

因此,任何不是单词字符(a-Z、A-Z、0-9)、不是空格、".“、"?”、"!“、"(”或")“的内容都将被替换为空字符串。则每个引号将被替换为:“。

我在前端检查数据,然后在我的服务器上检查。

有没有办法绕过这个“解决方案”?

我想知道StackOverflow是怎么做这件事的?这里有许多格式,所以他们必须做好它的工作。

EN

回答 5

Stack Overflow用户

发布于 2010-05-07 02:04:06

如果你只想要简单的文本,不用担心过滤特定的html标签。你想要的等同于PHP的htmlspecialchars()。使用此函数的一个好方法是print htmlspecialchars($var,ENT_QUOTES);此函数将执行以下编码:

代码语言:javascript
复制
'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '&lt;'
'>' (greater than) becomes '&gt;'

这在最低级别上解决了XSS的问题,并且您不需要一些您不理解的复杂的库/正则表达式(毕竟复杂性是安全性的敌人,而且可能是不安全的)。

确保通过运行free xss scanner对XSS FILTER进行测试。

票数 3
EN

Stack Overflow用户

发布于 2010-05-07 01:52:49

我同意Tomalak的观点,只想补充几点。

  1. 不允许使用HTML标记。其思想是将用户输入视为文本,并在呈现它们之前将其视为html转义字符。为此,请使用OWASP's ESAPI项目。
  2. 如果你必须允许This page explains the various possible encodings标签,使用一个库来为你做过滤。不要编写您自己的正则表达式;它们很难正确使用。使用OWASP's Anti-Samy project -它是专门为此用例设计的。
票数 2
EN

Stack Overflow用户

发布于 2010-05-24 22:07:15

我推荐阅读the XSS Prevention Cheat Sheet,它详细介绍了避免XSS攻击的最佳实践。从本质上讲,您需要过滤的内容取决于要使用它的上下文。

例如,在这种情况下:

代码语言:javascript
复制
<body>...ESCAPE UNTRUSTED DATA BEFORE PUTTING HERE...</body>

您需要做的是:

代码语言:javascript
复制
& --> &amp;
< --> &lt;
> --> &gt;
" --> &quot;
' --> &#x27;     &apos; is not recommended
/ --> &#x2F;     forward slash is included as it helps end an HTML entity

而在href=""的例子中,你需要做一个the转义:

“除字母数字字符外,使用%HH转义格式对ASCII值小于256的所有字符进行转义。在数据中包括不受信任的数据:不允许使用URL,因为没有很好的方法通过转义来禁用攻击以防止切换出URL。所有属性都应用引号括起来。未加引号的属性可以用许多字符分隔,包括空格%*+、-/;<=>^和|。请注意,实体编码在此上下文中无用。”

虽然引用的文章给出了完整的结论,但希望这个答案中有足够的信息来帮助您入门。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2781574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档