2011-09-19 42 views
4

安全性應始終是首先要考慮的事,對吧?我認爲這個問題非常重要,以至於以前有人應該問過這個問題,但在搜索結果中我沒有找到令人滿意的答案。安全方便地對用戶輸入和輸出進行安全消毒的真正方法是什麼

我既需要存儲用戶的文章內容數據庫和安全輸出。但有很多方法可以做到這一點。我可以用filter_var(),strip_tags(),mysql_real_escape_string(),stripslashes()等等來做到這一點。我不能選擇一個使用,我不能確認是否足夠安全地使用其中之一。

消毒輸入和輸出的最佳做法是什麼?

+4

如果您仔細考慮,總會有一種正確的方式來轉義數據。不過,之前已經有很多次被問及(並回答過)了。這是[我自己的答案之一](http://stackoverflow.com/questions/6475225/how-to-cleanse-a-string-to-avoid-sql-injection-and-the-most-common-types-of -attac/6475262#6475262)。 –

+0

「相關」部分有很多重複項 –

回答

2

簡單來說 「爲輸出上下文逃生/編碼」。這裏的所有都是它的。

當你要存儲在MySQL要製作一個MySQL statment東西。上下文:mysql語句。通過使用準備好的語句(爲您執行此操作)或使用PDO適配器實例引用數據,或使用mysql_real_escape_string(作爲最後的手段),對mysql語句進行編碼/轉義。

當你想輸出的東西在HTML頁面中,上下文:HTML數據。使用htmlspecialchars對HTML進行編碼,但要注意htmlspecialchars對於HTML屬性並不是足夠的,因爲空間也需要在此上下文中進行編碼,就像兩種引號一樣。

請記住,CSS和JavaScript是他們自己的上下文 - 不要像對待HTML。