所以我只是測試了mysql_real_escape();
函數,並且它在"
之前放置了一個\
。當內容回顯到頁面上時,我只需在"
之前獲得\'
的內容。所以我們假設我發佈了""""""""""""""""""""""""""""
,我得到的結果是\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"
。SQL注入幫助
有一些代碼刪除時,它的回顯到頁面上的\
?
所以我只是測試了mysql_real_escape();
函數,並且它在"
之前放置了一個\
。當內容回顯到頁面上時,我只需在"
之前獲得\'
的內容。所以我們假設我發佈了""""""""""""""""""""""""""""
,我得到的結果是\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"\"
。SQL注入幫助
有一些代碼刪除時,它的回顯到頁面上的\
?
通過添加那些斜線,只是mysql_real_escape_string
轉換串入數據庫的輸入格式。當數據從數據庫中傳出時,它應該沒有任何斜槓出現。你不應該自己去除它們。
使用stripslashes
與其他人一樣,建議在大多數情況下會做與mysql_real_escape_string
相反的操作,但不是全部,而且您不應該爲此目的而依賴它。請注意,如果你發現自己需要使用它,那麼你已經做了一些其他的錯誤。
+1準確!這個結果指向雙重編碼 – Andomar
$ text_share_body = $ _POST ['text_share_body']; $ text_share_body = mysql_real_escape_string($ text_share_body); – frankmeacey
它進入'「的前用「\」 S上的數據庫,但它並不全自動撤消斜槓上輸出 – frankmeacey
你不需要unescape,即。刪除斜線 - 它們不會插入到數據庫中。它們僅用於將數據傳遞給MySQL,它們不會寫入數據庫。當你SELECT
的數據,你不會看到斜槓。
你知道如何mysql_real_escape()
作品。提示:它允許爲SQL使用編碼字符串。例如mysql_query('SELECT * FROM users WHERE name="'.mysql_real_escape_string($name).'"');
。它可以用來插入不會引用引號的字符串,例如" or 1=1 -- "
製作爲SELECT * FROM users WHERE name="" or 1=1
。你必須在之前激活它插入它的數據庫。
當你將讀取該數據,斜線將不以任何方式存在。
其實,看着下面是什麼,我會做出這樣的回答,不作評論...
您使用'mysql_real_escape_string()'當你即將把字符串到數據庫中。當您從數據庫中讀取字符串時,它們將被轉義。很顯然,如果你只是'echo mysql_real_escape_string($ my_string))'',你會得到你所看到的效果。 –
如何將數據插入數據庫?如果您正在執行手動構建的INSERT查詢,則需要'mysql_real_escape_string()'。如果您正在使用準備好的語句(傳遞值作爲參數插入),那麼不要。請粘貼一個行爲不正確的最小代碼示例。 – Crack