[英]secure form data for mysql
我一直在使用:
if ($_POST['Comments']!=""){
$comments = mysql_real_escape_string($_POST['Comments']);
}else{
$comments = "";
}
自用戶添加和刪除他們的數據以來,它破壞了我的sql語句。 我認為這也同時保護了數據。 但剛才我收到了一份提交內容,並在數據庫的評論欄中看到:
/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r/r
<a href="http://seowebsite.com">seohelp</a>
當有人提交時,我收到的電子郵件中包含實際工作鏈接的文本。
我以為mysql_real_escape_string()
應該擺脫這一切?
有什么建議么? 我正在考慮做一個功能,在幾個不同的步驟中為我做所有的字符串清理。 但是,如果有一種方法可以在一步中確保安全。
mysql_real_escape_string()
只保護*您免受SQL注入,不是針對跨站點腳本(XSS)。
* mysql_real_escape_string()
與SET NAMES
結合使用時表現不正常,因為它不知道正在使用的字符集。 請改用mysql_set_charset()
。
為了保護自己免受XSS攻擊,您還必須在插入時(在mysql_real_escape_string()
之前)或在顯示時使用htmlentities()
或htmlspecialchars()
。
$escaped = htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
如果要允許某些 HTML內容,請使用HTML Purifier以及要允許的元素和屬性的白名單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.