【问题标题】:Handling a HTML WYSIWYG Editor处理 HTML WYSIWYG 编辑器
【发布时间】:2013-03-08 14:26:06
【问题描述】:

我使用 contentEditable="true" 构建了一个简单、轻量级的所见即所得 HTML 编辑器,通过 javascript 插入 HTML 标记。

一切都很好,除了我不知道提交、验证和将输入插入数据库的最佳方式。我担心有人可能会插入自己的标签并弄乱输出。

到目前为止,我最好的想法是在将输入插入 batabase 之前使用 PHP 将所有有效标签转换为 BBCode,然后清除所有其他标签。这是传统的吗?

谢谢!

【问题讨论】:

  • @Quentin :我已经剥离了其他 HTML 标签。我只是好奇我应该如何处理我想要保留的标签。这似乎没有回答它,但还是谢谢!
  • 您 (a) 不允许元素/属性会“弄乱输出”并且 (b) 根据重复的问题使用充当“验证器”的“真正的解析器”(这可以防止不匹配的开始/结束标签)
  • @Quentin:太棒了,谢谢!

标签: php html wysiwyg


【解决方案1】:

是的。 另一种方法是在您的所见即所得编辑器中转换您的标签。无论哪种方式都无法帮助您解决“从不信任用户输入数据”,因此您无论如何都必须验证该代码。您必须假设它可能已损坏。

【讨论】:

  • 谢谢!这正是我一直在寻找的。我至少知道我在正确的轨道上。 :)
【解决方案2】:

您可能希望通过HTML Purifier 之类的方式运行它,以确保删除任何恶意代码。

我不确定 HTML Purifier 是否已经这样做了,但您还想在存储数据之前使用 htmlentities 或 htmlspecialchars 去除任何与数据库攻击相关的代码。

【讨论】:

  • 谢谢,但是我想保留并影响输出的标签呢?我想在输出之前搜索这些标签,而不是将它们转换为 BBCode,会更好。
  • 我不确定你的意思。当您 post 您的 WYSIWYG 表单时,您将通过 HTML Purifier 运行它,并在存储之前使用 htmlspecialchars 对任何符号进行编码。然后在显示数据时,您将使用 htmlspecialchars_decode 将编码符号转换回有效的 HTML。
  • 哦,我明白了!对不起,这对我来说是一个新领域,我不熟悉所有术语。但我想我现在明白了。谢谢!
  • 不用担心。为了让它更清楚一点,你在这里要做的是:1)让用户提交所见即所得的表单。 2) 在将数据存储到服务器之前对其进行编码和清理。 3) 在将其呈现给用户之前解码现在净化的数据。这样你(希望)排除服务器端和客户端的攻击。 :-)
  • 哦,这简化了一切:) 这只是编码>插入>解码>输出的问题。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多