首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复javascript上的XSS漏洞?

问如何修复javascript上的XSS漏洞?
EN

Stack Overflow用户
提问于 2011-09-03 20:20:46
回答 3查看 11.4K关注 0票数 2

1)我得到带有html标签的响应,例如: This is <b>Test</b>

2)有时响应可能包含脚本(或iframe、canvas等)标签(XSS),例如:This <script>alert("Hello from XSS")</script> is <b>Test</b>

3)如何删除所有XSS标签(script、iframe、canvas...)除了其他html标签?

PS:我不能使用转义,因为它删除了<b>,<strong>和其他标签。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-03 21:09:22

如何删除所有的XSS标签(script、iframe、canvas...)除了其他html标签?

所有标签都可能存在XSS风险。例如<b onmouseover="...">、<a href="javascript:...">或<strong style="padding: expression(...)">。

要使HTML“安全”,您需要将其过滤为只允许已知安全的元素和属性的最小集合。所有URL属性都需要进一步检查已知良好的协议。这被称为“白名单”。

这不是一项简单的任务,因为您通常必须正确地解析HTML以检测存在哪些元素和属性。简单的正则表达式不足以提取潜在麻烦内容的范围,特别是在JavaScript中,它的正则表达式引擎相对有限(没有后视,不可靠的前视等)。

有一些针对服务器端语言的工具可以为您完成这项工作,例如PHP的HTML Purifier。我建议在返回内容之前在服务器端使用其中的一个库,因为我目前还不知道用于JavaScript的这种好的库。

票数 5
EN

Stack Overflow用户

发布于 2011-09-03 20:29:00

你不需要删除标签,只需要做翻译。例如,将<转换为&lt;,将>转换为&gt;等。

如果您正在使用php,一些函数用于此:

htmlspecialchars

htmlentities

票数 0
EN

Stack Overflow用户

发布于 2014-04-23 12:53:36

下面的函数可用于对输入数据进行编码,以修复javascript上的XSS漏洞

代码语言:javascript
复制
/*Using jQuery : the script to escape HTML/JS characters*/
function htmlEncode(value) {
     if (value) {
         return $('<div/>').text(value).html();
     } else {
         return '';
     }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7293077

复制
相关文章

相似问题

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