我正在使用Php和Mysql构建一个小型/测试CMS。所有内容都在添加、编辑、删除和显示级别上进行了惊人的工作,但是在完成代码之后,我想在Admin后端添加一个WYSIWYG编辑器。
我的问题是,我正在使用转义方法,希望使我的表单更加安全,并尝试转义注入,因此,当在我的编辑器中添加样式的文本、图像或任何其他HTML代码时,我会将它们作为行代码打印在我的页面上(这是完全正确的避免攻击)。
我的逃跑方法:
function e($text) {
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');}有没有办法绕过我的逃逸方法(即认为不应该这样做,因为如果我能做到这一点,每个攻击者都能做到)。
或者我应该将我的逃逸方法改为另一种方法?
发布于 2016-04-21 08:01:24
您可以使用strip_tags()删除不需要的标记。在本手册上阅读:http://php.net/manual/en/function.strip-tags.php
示例1(基于手册)
<?php
$text = '<p>Test paragraph, <a href="#">With link</a>.</p>';
# Output: Test paragraph, With link. (Tags are stripped)
echo strip_tags($text);
echo "\n";
# Allow <p> and <a>
#Output: <p>Test paragraph, <a href="#">With link</a>.</p>
echo strip_tags($text, '<p><a>');
?>我希望这能帮到你!
发布于 2016-04-21 08:03:57
如果我正确地理解了您的意思,您将允许您的用户在他们将要创建的文本中放置一些格式。为此,您将添加一些WYSISWYG编辑器。但问题是如何区分格式和特殊字符,哪些是允许的,哪些是不允许的。您需要清理文本,只保留有效的允许格式(HTML标记),并删除所有恶意的JavaScript或HTML。
这不是一个容易的任务,因为它可能听起来在第一时刻。我能在这里看到几种方法。
strip_tags并指定允许使用哪些标记。但请记住,strip_tags并不完美。让我在这里引用手册。
由于strip_tags()并不实际验证HTML,部分或破损的标记会导致删除比预期更多的文本/数据。 此函数不修改使用allowable_tags允许的标记上的任何属性,包括调皮用户在发布将显示给其他用户的文本时可能滥用的样式和onmouseover属性。
这是一个众所周知的问题。还有一些库可以更好地清除HTML和JS,以防止中断。
从文件中引用
HTML净化器不仅将使用经过彻底审核、安全但允许的白名单删除所有恶意代码(更称为XSS),还将确保您的文档符合标准,只有全面了解W3C的规范才能做到这一点。
其他解决相同任务的库也存在。例如,您可以检查这个比较图书馆的文章。最后你可以选择最好的。
使用简单的文本标记可以让您完成,避免问题的破坏,JavaScript和JavaScript,因为您可以转义一切,并建立自己的HTML。
编辑器看起来就像我用来写这条消息的那个:)
https://stackoverflow.com/questions/36762742
复制相似问题