亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP:mysql_real_escape_string是否足以清除用戶輸入?

PHP:mysql_real_escape_string是否足以清除用戶輸入?

LEATH 2019-07-27 09:50:33
PHP:mysql_real_escape_string是否足以清除用戶輸入?mysql_real_escape_string在大多數情況下是否足以清理用戶輸入?::編輯::我主要考慮的是防止SQL注入,但我最終想知道在應用mysql_real_escape_string之后是否可以信任用戶數據,或者我應該采取額外措施來清理數據,然后再將其傳遞給應用程序和數據庫。我知道清除HTML字符的位置很重要,但我不認為有必要信任用戶輸入。?
查看完整描述

3 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

你的問題的答案是否定的。沒有mysql_real_escape_string()不適合所有用戶輸入,mysql_real_escape_string()不會停止所有sql注入。addslashes()是另一個在php中使用的流行函數,它也有同樣的問題。

弱勢代碼:

mysql_query("select * from user where id=".mysql_real_escape_string($_GET[id]));

poc exploit:

http://localhost/sql_test.php?id=1 or sleep(500)

補丁是在id周圍使用引號:

mysql_query("select * from user where id='".mysql_real_escape_string($_GET[id])."'");

真正最好的方法是使用一些人們指出的參數化查詢。Pdo運行良好,adodb是另一個流行的php庫。

如果你確實使用mysql_real_escape_string應該只用于sql注入,而不是別的。漏洞高度依賴于數據的使用方式。人們應該逐個功能地應用安全措施。是的,XSS是一個非常嚴重的問題。不對html進行過濾是一個嚴重的錯誤,黑客會用它來解決你的問題。請閱讀xss常見問題解答


查看完整回答
反對 回復 2019-07-27
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

對于數據庫,是的。您還需要考慮為輸出充分轉義/編碼數據。

您還應該考慮根據預期驗證輸入。

你考慮過使用準備好的陳述嗎?PHP提供了許多與數據庫交互的方法。其中大多數都比mysql_ *函數更好。

PDOMDB2MySQL改進應該讓你入門。


查看完整回答
反對 回復 2019-07-27
  • 3 回答
  • 0 關注
  • 737 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號