簡體   English   中英

安全的mysql表單數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM