有没有办法通过将 php 保存到数据库中来清理 HTML 代码? [复制]
Posted
技术标签:
【中文标题】有没有办法通过将 php 保存到数据库中来清理 HTML 代码? [复制]【英文标题】:Is there anyway to clean HTML code via php being saved to a database? [duplicate] 【发布时间】:2012-05-28 02:06:05 【问题描述】:可能重复:What's the best method for sanitizing user input with php?
我正在使用 TinyMCE 来允许用户编辑网页的一小部分。
此字段保存到数据库中。
是否有一个正则表达式可以用来清理传入的 html 代码,从而避免任何 XSS/NULL/DROP TABLES 类型的攻击?
我已经在单行输入文本/数字等上完成了此操作,但不确定在接收 HTML 字符串时如何处理。
【问题讨论】:
【参考方案1】:我建议使用HTMLPurifier。
【讨论】:
谢谢@raina77,我去看看!【参考方案2】:您可以使用 PHP 函数:striptags
和 htmlspecialchars
:
http://php.net/manual/en/function.strip-tags.php
【讨论】:
这将清除 TinyMCE 生成的 HTML。他希望允许 HTML 但删除任何 XSS 威胁。 @MrCode 是正确的。我不想剥离任何标签,只是剥离危险的标签或 javascripts。【参考方案3】:你可以用这个 -
function safe_sql($obj)
$obj = htmlspecialchars($obj);
$obj = str_replace('"',""",$obj);
$obj = str_replace("'","'",$obj);
$obj = str_replace("`","`",$obj);
$obj = mysql_real_escape_string($obj);
return $obj;
我正在使用它,它工作正常。 并且你也可以使用这个功能使其正常(在你从数据库中拉取数据之后) -
function to_Normal($data)
$data = htmlspecialchars_decode($data);
$data = str_replace(""",'"',$data);
$data = str_replace("'","'",$data);
$data = str_replace("`","`",$data);
$data = nl2br($data);
return $data;
【讨论】:
以上是关于有没有办法通过将 php 保存到数据库中来清理 HTML 代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
在 php 中将 XML 文档转换为数组时,有没有办法将其转换回来并将其保存为属性为元素的 XML 文件?