html - 显示 HTML 用户输入,安全问题

标签 html security input

在我的网站上,用户可以为内容输入 html 标签,因此文本可以是粗体、斜体或链接和图像。我计划使用真正使用 HTML 标签的 ckeditor 或 tinymce(不是 BBC 代码或 wiki 语法) 如果我允许 HTML,当显示文本时,它将被解释,并且它可能包含一些“hack”,如 javascript 或 XSS .... 我该怎么做才能避免这个安全问题? 我必须列出想要的 html 标签并删除所有不需要的标签和内容吗? 我可以为此使用条形标签吗?

例如,它是如何在 stackoverflow 上完成的?

你知道一些插件 php/jquery 插件可以安全地保存和安全地解释有限的 html 标签吗?

预先感谢您的帮助

最佳答案

您需要同时使用服务器端 HTML 清理器和 Content Security Policy防止内联脚本、eval 和远程托管脚本

根据您在服务器端使用的语言,使用 HtmlSanitiser 或 python Bleach。

使用客户端验证或简单过滤根本不会保护您:

  1. 如果用户手动提交表单,@Smamatti 建议的客户端验证将无济于事。
  2. 简单过滤,例如 str_replace('<script>', '', $str);当有人上传 <script src="foo"> 时,@user1477388 建议不会保护您或 <<script>script>alert('foo');</script><body onload="alert('foo')";</body>

关于html - 显示 HTML 用户输入,安全问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406590/

相关文章:

php - FileMaker 安全问题

css - 默认输入样式的边框颜色

html - 输入标签后面的位置标签

java - 从html中获取隐藏字段值

html - 整个文本文章中的多个 float 图像

html - HTML5 表单验证的条件规则

html - 使用 CSS 响应式流体设计在按钮中放置图像

security - 访问 token 和刷新 token 最佳实践?如何实现访问和刷新 token

ios - 如何保护我的 iOS 应用免受 iFunbox 等工具的侵害

angular - 通过 Angular 组件将函数作为参数传递给(单击)事件