2011-08-14 29 views
2

我有一個tinyMCE編輯器,它將數據傳遞給php處理文件。

如果我使用$variable=$_POST(['tinyMCE_textarea']);一切都可以。 但我想確保它不會因爲輸入一些數據到textarea的用戶而產生不好的結果。

而當我使用$variable=mysql_real_escape_string($_POST(['tinyMCE_textarea'])); 結果變得損壞了一些\"跡象。那麼如何在不改變變量的情況下增加最大的安全性?

+0

你怎麼想‘安全’這你們是不是要防止[SQL?注射](http://en.wikipedia.org/wiki/SQL_injection)? –

+0

是的,並再次其他可能的威脅 – David

回答

4

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']); 
+0

我建議存儲在一個變量的值,所以你不直接處理$ _POST變量 – kjetilh

+0

非常感謝!另一個問題,你建議我所有來自用戶輸入數據庫的方式,你寫的嗎?我的意思是它工作正常,但它是正確的方式來添加mysql_real_escape_string到每個變量,同時更新或插入數據到mysql? – David

+0

請寫來自一個簡單的例子通過POST變量將其存儲到MySQL。但是用最可靠的方式,簡單而容易,當然也是安全的 – David

0

只要記住在輸出之前(使用例如htmlentities())就可以跳過用戶輸入,並在將字符串存儲到數據庫之前將其轉義。

0

使用SQL參數綁定,您可以安全地進行任何注入。

1

使用預處理語句或PDO。
使用ヶ輛()或隱蔽ATLEAST「<」和「<」'「到‘& GT;’等等..