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

时间:2012-09-13 12:44:38

标签: html security input

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

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

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

提前感谢您的帮助

1 个答案:

答案 0 :(得分:4)

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

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

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

  1. 如果用户手动提交表单,@ smamatti建议的客户端验证将无法帮助您。
  2. 当用户上传str_replace('<script>', '', $str);<script src="foo"><<script>script>alert('foo');</script> 时, @ user1477388建议的<body onload="alert('foo')";</body>等天真过滤将无法保护您