我有一個tinyMCE編輯器,它將數據傳遞給php處理文件。
如果我使用$variable=$_POST(['tinyMCE_textarea']);
一切都可以。 但我想確保它不會因爲輸入一些數據到textarea的用戶而產生不好的結果。
而當我使用$variable=mysql_real_escape_string($_POST(['tinyMCE_textarea']));
結果變得損壞了一些\"
跡象。那麼如何在不改變變量的情況下增加最大的安全性?
我有一個tinyMCE編輯器,它將數據傳遞給php處理文件。
如果我使用$variable=$_POST(['tinyMCE_textarea']);
一切都可以。 但我想確保它不會因爲輸入一些數據到textarea的用戶而產生不好的結果。
而當我使用$variable=mysql_real_escape_string($_POST(['tinyMCE_textarea']));
結果變得損壞了一些\"
跡象。那麼如何在不改變變量的情況下增加最大的安全性?
TinyMCE能夠清理數據,但重要的是不要依賴客戶端的東西。
要保護數據庫的數據,請使用mysql_real_escape_string()
。結果是用於mysql而不是用於顯示。
要保護顯示數據的安全性,請使用htmlspecialchars()
函數。 htmlentities()也適用,但會轉換所有適用的實體,所以爲了安全起見,您只需要htmlspecialchars()。
所以簡化的圖象是
.// Insert to database
mysql_query("INSERT INTO data (content) VALUES ('" . mysql_real_escape_string($_POST['tinyMCE_textarea']) . "')");
.// Display to user - doesn't matter whether the data is from post or database
echo htmlspecialchars ($_POST['tinyMCE_textarea']);
只要記住在輸出之前(使用例如htmlentities()
)就可以跳過用戶輸入,並在將字符串存儲到數據庫之前將其轉義。
使用SQL參數綁定,您可以安全地進行任何注入。
使用預處理語句或PDO。
使用ヶ輛()或隱蔽ATLEAST「<」和「<」'「到‘& GT;’等等..
你怎麼想‘安全’這你們是不是要防止[SQL?注射](http://en.wikipedia.org/wiki/SQL_injection)? –
是的,並再次其他可能的威脅 – David