跨站脚本:如何检查字符串

发布于 2024-12-27 05:47:32 字数 530 浏览 0 评论 0原文

我有一根绳子。这是某些 html 标签的某些属性的值。

如何检查该字符串是否包含javascript?

例如(IMG标签的SRC属性):

1. <IMG src="javascript:alert('XSS')"> - contains script<br/>
2. <IMG src="JaVaScRiPt:alert('XSS')"> - contains script<br/>
3. <IMG &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;> - also contains javascript

I have a string. This is the value of some attribute of some html tag.

How to check if this string contains javascript?

For example (SRC attribute of IMG tag):

1. <IMG src="javascript:alert('XSS')"> - contains script<br/>
2. <IMG src="JaVaScRiPt:alert('XSS')"> - contains script<br/>
3. <IMG javascript:alert('XSS')> - also contains javascript

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

£冰雨忧蓝° 2025-01-03 05:47:32

您首先必须规范化,然后进行检查。但我会考虑 HtmlPurifier 或 OWASP AntiSamy。

You first have to canonicalize, then check. But i would look at HtmlPurifier or OWASP AntiSamy for that.

情徒 2025-01-03 05:47:32

这很难做到,因为有很多奇怪而棘手的方法可以潜入 JavaScript。

HTMLPurifier如果您必须首先允许 HTML 输入,a> 具有相当复杂的解析来过滤掉所有潜在不安全的 HTML。

但是,通常您甚至不应该尝试这样做,而只需始终转义字符串

在 PHP 中,即:

echo htmlspecialchars($string);

在 JS 中,您可以使用 document.createTextNode() 或 jQuery 的等效 $(el).text() 安全地将文本插入到 DOM 中(这两种方法不需要转义)。

It's pretty hard to do, as there are lots of odd and tricky ways to sneak JavaScript in.

HTMLPurifier has pretty complex parsing to filter out all potentially unsafe HTML if you must allow HTML input in the first place.

However, generally you shouldn't even try to do that, and simply always escape the string.

In PHP that is:

echo htmlspecialchars($string);

In JS you can use document.createTextNode() or jQuery's equivalent $(el).text() to safely insert text into DOM (those two methods don't require escaping).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文