【问题标题】:Which is the best way of correct filter for HTML editor in PHP?在 PHP 中正确过滤 HTML 编辑器的最佳方法是什么?
【发布时间】:2010-07-07 11:02:30
【问题描述】:

我在我的网站中使用 TinyMCE 编辑器。当我插入数据库时​​,我想学习正确过滤器的方法。需要使用哪些过滤器?例如,我以这种方式将此输入输入数据库;

$example = $_POST['example'];

<textarea name="example"></textarea>

我没有使用 htmlscepialchars();因为我需要html标签。

“对不起,我的英语不好。”

【问题讨论】:

  • 问题不清楚。你会把$example的内容放在哪里。你不想让什么?
  • @Artefacto 我想允许 html 标签,但我想阻止不需要的 sql 查询和其他不需要的代码。

标签: php editor filter javascript


【解决方案1】:

HTMLPurifier.

在此处下载:http://htmlpurifier.org/

包含它:

include 'path/to/HTMLPurifier.auto.php';

使用它:

$config = HTMLPurifier_Config::createDefault();
$config->set('Core', 'Encoding', 'UTF-8');
$config->set('XHTML', 'Doctype', 'XHTML 1.0 Strict');
$purifier = new HTMLPurifier($config);
$clean_html = $purifier->purify( $dirty_html );

知道在这样清理的 HTML 中没有 XSS 攻击,所以睡得很好。

建议 mysql_real_escape_string() 的人可能没有得到你的问题(或者我没有得到),你问的是如何从 WYSIWYG 编辑器过滤 HTML 标记,以便它可以安全地存储在数据库中。

mysql_real_escape_string() 与防止 SQL 注入有关,但准备好的语句(谷歌“PDO”)对此更好。

【讨论】:

    【解决方案2】:

    如果我理解正确,您想将 html 保存到您的数据库中,并且需要某种方式对其进行编码?

    您可以在保存到数据库之前执行以下操作:

    urlencode($_POST['example']);
    

    而当你检索时,你可以 urldecode($data);

    【讨论】:

    • 我被否决是有原因的吗?我给出的答案是一个可行的解决方案——所以,谁投反对票最好站出来解释为什么他们觉得这不是……
    猜你喜欢
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多