Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在这种情况下(PHP/MySQL),不清理用户输入可以吗?_Php_Security_Tinymce - Fatal编程技术网

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

在这种情况下(PHP/MySQL),不清理用户输入可以吗?,php,security,tinymce,Php,Security,Tinymce,我总是通过html实体和mysql real escape string函数运行用户提供的输入 但是现在我正在构建一个CMS,它在管理部分有一个WYSIWYG编辑器。我注意到在WYSIWYG编辑的用户内容上使用htmlentities()删除了所有样式,并在前端文章页面上抛出了一堆引号(这是可以预期的) 因此,在这种情况下,不清除用户输入的html/Javascript可以吗?我仍然会使用mysql\u real\u escape\u string(),这并不冲突 虽然管理员是唯一有权访问后端的

我总是通过html实体和mysql real escape string函数运行用户提供的输入

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

因此,在这种情况下,不清除用户输入的html/Javascript可以吗?我仍然会使用mysql\u real\u escape\u string(),这并不冲突

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

<script>window.location = "http://evilsite.com"</script>
window.location=”http://evilsite.com"
那我该怎么办?还有哪些函数会禁用javascript,但不会禁用html和内联css


顺便说一句,WYSWYG很小。

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


不过,对于您的情况,这取决于您使用的所见即所得编辑器。查看TinyMCE的文档或四处询问,看看它对在其富文本编辑器中显示/呈现有关XSS漏洞的HTML输出的说明。

您可以尝试将HTMLPurifier添加到您的软件库中。它很容易实现,并且使用了一种“只不过”的方法,即只要求您列出希望用户能够使用的标签。就我而言,这是

  • ,没有其他内容了。谢谢安德鲁,如果你将此作为回复,我会选择它作为最佳答案。