2014-02-12 72 views
2

我一直在使用它來從xss-injects中清理我的textareas,我還沒有任何問題,但自從我在谷歌周圍閱讀我不知道這是否是一種安全的方式。我是否安全地清理textarea

$comment = nl2br(htmlspecialchars($_POST['comment'])); 

然後我用bind_param()將它插入到我的數據庫中使用mysqli;防止SQL的注入

而且lasty我只是通過<p><?php echo $info['comment']; ?></p>

outputtting它這是一種安全的方式?

我想要做的就是淨化,然後將其存儲在我的數據庫中,然後輸出它,並帶有工作線段。

由於提前,

回答

3

商店原樣,使用轉義您的數據庫庫提供。 nl2br以及如果需要htlmentities/specialchars顯示它。

+0

乾杯,任何理由爲什麼不插入數據庫時​​立即使用htmlspecialchars()? – user2722667

+0

它是HTML,所以如果你想將它呈現爲HTML,它將以其真實的形式呈現。如果你不希望它呈現爲HTML,那麼你會改變它。它不像DB中的HTML那樣不安全,但可能在瀏覽器中呈現不安全。 – AbraCadaver

+0

好吧,所以我想如果我使用nl2br(htmlspecialchars($ _ POST ['comment']));''插入,然後直接從數據庫輸出它,因爲我已經做了清理,因爲當我插入它? – user2722667

0

你根本沒有消毒。

如上所述,您需要使用您的數據庫庫提供的轉義,因爲轉義方法因數據庫類型而異。

從歷史上看,您會使用mysql_real_escape_string(),但現在已棄用PHP 5.5.0。

+0

這是一個恥辱,這個評論承擔不應得的upvote。 –

+0

小心細緻,而不僅僅是一個沖洗袋? –

+0

我使用mysqli bind_param/mysqli準備語句,所以不需要real_escape? 我的問題是,如果上面的代碼將保護我免受XSS和SQL注入 – user2722667