在这种情况下(PHP/MySQL)可以不清除用户输入吗?

Joe*_*Joe 2 php security tinymce

我总是通过html实体和mysql真实转义字符串函数运行用户提供的输入.

但现在我正在构建一个CMS,它在管理部分有一个WYSIWYG编辑器.我注意到在WYSIWYG编辑的用户内容上使用htmlentities()删除了所有样式并在前端文章页面上引发了一堆引号(可以预期).

那么在这种情况下不清除用户输入的html/javascripts是否可以?我仍然会使用不冲突的mysql_real_escape_string().

虽然管理员是唯一一个可以访问后端的人,但我可以想到至少有一个场景,假设黑客以某种方式获得了创建帖子页面的权限,现在虽然他们可以通过删除帖子等来造成严重破坏,相反,他们选择使用此作为通过发布此帖子将访问者发送到他的网站的机会:

<script>window.location = "http://evilsite.com"</script>
Run Code Online (Sandbox Code Playgroud)

所以我该怎么做?还有什么功能可以禁用javascript而不是html和内联css?

WYSWYG顺便说一下是TinyMCE.

Bol*_*ock 6

不清除用户输入是绝对不行的.任何人都可以破坏你的系统,就像你假设的那样.这种风险根本不值得.

虽然,对于您的情况,它将取决于您使用的WYSIWYG编辑器.查看TinyMCE的文档或四处询问,看看它在富文本编辑器中显示/呈现HTML输出的内容与XSS漏洞有关.