首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用PHP转义方法使用WYSIWYG编辑器

用PHP转义方法使用WYSIWYG编辑器
EN

Stack Overflow用户
提问于 2016-04-21 07:32:32
回答 2查看 1.2K关注 0票数 2

我正在使用Php和Mysql构建一个小型/测试CMS。所有内容都在添加、编辑、删除和显示级别上进行了惊人的工作,但是在完成代码之后,我想在Admin后端添加一个WYSIWYG编辑器。

我的问题是,我正在使用转义方法,希望使我的表单更加安全,并尝试转义注入,因此,当在我的编辑器中添加样式的文本、图像或任何其他HTML代码时,我会将它们作为行代码打印在我的页面上(这是完全正确的避免攻击)。

我的逃跑方法:

代码语言:javascript
运行
复制
function e($text) {
return htmlspecialchars($text, ENT_QUOTES, 'UTF-8');}

有没有办法绕过我的逃逸方法(即认为不应该这样做,因为如果我能做到这一点,每个攻击者都能做到)。

或者我应该将我的逃逸方法改为另一种方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-21 08:01:24

您可以使用strip_tags()删除不需要的标记。在本手册上阅读:http://php.net/manual/en/function.strip-tags.php

示例1(基于手册)

代码语言:javascript
运行
复制
<?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>');
?>

我希望这能帮到你!

票数 1
EN

Stack Overflow用户

发布于 2016-04-21 08:03:57

如果我正确地理解了您的意思,您将允许您的用户在他们将要创建的文本中放置一些格式。为此,您将添加一些WYSISWYG编辑器。但问题是如何区分格式和特殊字符,哪些是允许的,哪些是不允许的。您需要清理文本,只保留有效的允许格式(HTML标记),并删除所有恶意的JavaScript或HTML。

这不是一个容易的任务,因为它可能听起来在第一时刻。我能在这里看到几种方法。

  1. 最简单的解决方案是使用strip_tags并指定允许使用哪些标记。

但请记住,strip_tags并不完美。让我在这里引用手册。

由于strip_tags()并不实际验证HTML,部分或破损的标记会导致删除比预期更多的文本/数据。 此函数不修改使用allowable_tags允许的标记上的任何属性,包括调皮用户在发布将显示给其他用户的文本时可能滥用的样式和onmouseover属性。

这是一个众所周知的问题。还有一些库可以更好地清除HTML和JS,以防止中断。

  1. 更复杂的解决方案是使用一些高级库来清理HTML代码。例如,这可能是HTML净化器

从文件中引用

HTML净化器不仅将使用经过彻底审核、安全但允许的白名单删除所有恶意代码(更称为XSS),还将确保您的文档符合标准,只有全面了解W3C的规范才能做到这一点。

其他解决相同任务的库也存在。例如,您可以检查这个比较图书馆的文章。最后你可以选择最好的。

  1. 完全不同的方法是避免用户编写HTML标记。让他们编写一些其他标记,比如在StackOverflow、Basecamp或GitHub上这样做。降价可能是一种很好的方法。

使用简单的文本标记可以让您完成,避免问题的破坏,JavaScript和JavaScript,因为您可以转义一切,并建立自己的HTML。

编辑器看起来就像我用来写这条消息的那个:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36762742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档