在PHP中,HTML编辑器的正确过滤方式是什么?

4
我在我的网站上使用TinyMCE编辑器。我想学习正确的输入过滤方式,以便在插入到数据库时使用。需要使用哪些过滤器?例如,我是这样将此输入插入到数据库中的;
$example = $_POST['example'];

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

我没有使用htmlspecialchars();因为我需要HTML标记。
“对不起,我的英语很差。”

问题不够清晰。您将把$example的内容放在哪里?您想禁止什么? - Artefacto
@Artefacto 我想允许HTML标签,但我想阻止不必要的SQL查询和其他不必要的代码。 - Aaron
2个回答

2

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”)更好。


0

如果我理解正确,您想将HTML保存到数据库中,并需要一些编码方式?

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

urlencode($_POST['example']);

当你检索时,可以使用urldecode($data)进行解码。


我被踩的原因是什么?我给出的答案是可行的解决方案 - 所以,谁踩了我就最好站出来解释一下为什么他们觉得它不好... - xil3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接