如何清理NicEdit的HTML POST值?

时间:2011-12-11 03:33:43

标签: php security sanitization bbcode nicedit

我最近开始在我的“文章条目”页面上使用NicEdit。但是,我对安全性和防止滥用有一些疑问。

第一个问题: 我目前在数据库类中使用“mysql_real_escape_string()”清理每个输入。另外,我使用“htmlspecialchars(htmlentities(strip_tags($ var)))来清理HTML值。

在将“HTML输入”添加到数据库时,如何清理“HTML输入”,或者我的工作方式是否完美?

第二个问题: 当我提出这个问题时,有一个“类似标题”的问题,所以我曾经提到过一次。有人在谈论“滥用HTML输入”以捣乱他的有效模板。 (例如只是输入)

也可能在我当前的系统上发生。如何在PHP中处理它?<​​/ p>

聚苯乙烯。我想继续使用NicEdit,所以使用BBCode系统应该是最后的建议。

谢谢。

2 个答案:

答案 0 :(得分:3)

  1. mysql_real_escape_string不是清理,它转义文本值,以保持SQL查询的语法有效/明确/注入安全。
  2. strip_tags 清理您的字符串。
  3. 按顺序同时执行htmlentities htmlspecialchars是过度的,可能只是乱用您的数据。既然你之前也在剥离标签,那就是双重矫枉过正了。
  4. 规则是确保您的数据不会破坏您的SQL语法,因此在将数据放入查询之前,您需要mysql_real_escape_string 一次。您也可以使用 htmlspecialchars(推荐) {{1来保护您的HTML语法,通过HTML转义文本,然后将其输出到HTML中}, 不是
  5. 为了更深入地了解所有这些阅读The Great Escapism (Or: What You Need To Know To Work With Text Within Text)
  6. 我不知道NicEdit,但我认为它允许用户在幕后使用HTML设置文本样式。为什么要从数据中剥离HTML呢?那么使用WYSIWYG编辑器毫无意义。

答案 1 :(得分:0)

这是我在我的一个NICEDIT应用程序中使用的函数,它似乎与nicedit出来的代码相关。

function cleanFromEditor($text) { 

    //try to decode html before we clean it then we submit to database
    $text = stripslashes(html_entity_decode($text));

    //clean out tags that we don't want in the text
    $text = strip_tags($text,'<p><div><strong><em><ul><ol><li><u><blockquote><br><sub><img><a><h1><h2><h3><span><b>');

    //conversion elements
    $conversion = array(
        '<br>'=>'<br />',
        '<b>'=>'<strong>',
        '</b>'=>'</strong>',
        '<i>'=>'<em>',
        '</i>'=>'</em>'
    );

    //clean up the old html with new
    foreach($conversion as $old=>$new){
        $text = str_replace($old, $new, $text);
    }   

    return htmlentities(mysql_real_escape_string($text));
}