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

标签 php security tinymce

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

但现在我正在构建一个 CMS,它在管理部分有一个所见即所得编辑器。我注意到,在所见即所得编辑的用户内容上使用 htmlentities() 删除了所有样式,并在前端文章页面上抛出了一堆引号(正如预期的那样)。

那么在这种情况下不清理用户输入的 html/javascript 可以吗?我仍然会使用 mysql_real_escape_string() ,它不会冲突。

虽然管理员是唯一有权访问后端的人,但我至少可以想到一种情况,假设黑客以某种方式访问​​了创建帖子页面,但现在他们可以通过删除帖子来造成严重破坏等,相反,他们选择以此为契机,通过发布以下帖子将访问者引导至他的网站:

<script>window.location = "http://evilsite.com"</script>

那我该怎么办呢?还有是否有任何函数可以禁用 javascript,但不能禁用 html 和内联 css?

顺便说一下,WYSWYG 就是 TinyMCE。

最佳答案

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

不过,对于您的情况,这取决于您使用的所见即所得编辑器。查看 TinyMCE 的文档或四处询问,看看它是如何在富文本编辑器中显示/渲染 HTML 输出的 XSS 漏洞的。

关于php - 在这种情况下(PHP/MySQL)可以不清理用户输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4755238/

相关文章:

c - 安全编程中的 Memcpy()?

c# - 使用 Selenium 将文本发送到不适用于 IE9 的 tinymce 控件

php - 在 magento 中为订单添加评论

php - Facebook Jquery ajax 权限请求?

PHP 不会更新 MySQL

php - 在 XAMPP 中创建 php Web 服务器

php - 如何快速保护身份验证

asp.net - HTML.Encode() - 它是什么/如何防止 ASP .NET 中的脚本安全问题?

php - 使用 tinymce 编辑器的问题

css - 在 tinymce 编辑器中自定义插入/编辑窗口