存储 HTML 时避免 XSS 攻击

发布于 2024-11-15 12:32:05 字数 217 浏览 0 评论 0原文

我的网站存储用户生成的 HTML。当然,这些数据会呈现在网页上。渲染 HTML 和避免 XSS 攻击的最佳实践是什么?剥离

我想要一个一般性的答案,与任何语言或技术无关。

My site stores HTML that is generated by the user. Then of course this data is rendered on a web page. What are the best practices for rending the HTML and avoiding XSS attacks? Is stripping <script> and <iframe> tags enough? Will this cover all browsers? I heard of old browsers rendering HTML from weird encoding... how can I handle this?

I would like a general answer, not related to any languages or technologies.

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

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

发布评论

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

评论(4

清君侧 2024-11-22 12:32:05

您可以使用像 Jsoup 这样的库,尤其是它们的 whitelist-sanitizer 以防止 XSS。

总的来说,我认为使用白名单是一种更好/更安全的方法,而不是过滤黑名单标签。此外,首先应该避免使用 HTML。相反,应该使用一些简单的标记,例如 markdown

You could use libraries like Jsoup especially their whitelist-sanitizer to prevent XSS.

In general, I think it is a better/safer aproach to use a white list, rather than filtering black listed tags. Besides, HTML should be avoided in the first place. Instead, some simple markup, like markdown, should be used.

亢潮 2024-11-22 12:32:05

我可以向你保证,没有办法安全地完成你所要求的事情。狡猾的黑客总是能够利用允许用户发送任意 html 的系统,即使是通过剥离某些标签进行清理。这正是 markdownBBcode 存在。为什么看,连 StackOverflow 都在使用类似的。

您正在考虑走的道路上散布着 10,000 个被利用的网站。

I can assure you there is no way to safely do what you are asking. A crafty hacker will always be able to exploit a system that allows arbitrary html from the user, even when cleaned up by stripping away certain tags. This is exactly why tools like markdown and BBcode exist. Why look, even StackOverflow is using similar.

The road you are considering traveling down is littered with 10,000 exploited web sites.

木有鱼丸 2024-11-22 12:32:05

当允许您的用户在您的页面上设置 HTML 时,您会迷失方向,有多种可能性,例如 onmouseover"myEvilJS" 或

You're lost when will allow your user do set HTML on your page, there a re wide range of possibilities like onmouseover"myEvilJS" or

2024-11-22 12:32:05

至少您必须转换此符号。

& -> &

< -> <

> -> >

“-> ”

'-> '

/-> /

Minimum you must convert this symbols.

& -> &

< -> <

> -> >

“ -> "

‘ -> '

/ -> /

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