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

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

圍繞mysql_real_escape_string()的SQL注入

圍繞mysql_real_escape_string()的SQL注入

達令說 2019-05-20 15:28:09
即使使用mysql_real_escape_string()函數,是否存在SQL注入的可能性?考慮這個示例情況。SQL是用PHP構造的,如下所示:$login = mysql_real_escape_string(GetFromPost('login'));$password = mysql_real_escape_string(GetFromPost('password')); $sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";我聽過很多人對我說,像這樣的代碼仍然很危險,即使使用了mysql_real_escape_string()函數也可以破解。但我想不出任何可能的漏洞?像這樣的經典注射:aaa' OR 1=1 --不工作。你知道任何可能通過上面的PHP代碼注入的注入嗎?
查看完整描述

3 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

請考慮以下查詢:

$iId = mysql_real_escape_string("1 OR 1=1");    $sSql = "SELECT * FROM table WHERE id = $iId";

mysql_real_escape_string()不會保護你免受這種傷害。 您在查詢中的變量周圍使用單引號(' ')的事實可以保護您免受此攻擊。以下是一個選項:

$iId = (int)"1 OR 1=1";$sSql = "SELECT * FROM table WHERE id = $iId";


查看完整回答
反對 回復 2019-05-20
?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

嗯,除了%通配符之外,除了通配符外,沒有什么可以通過它。如果您使用LIKE聲明可能會很危險,%因為如果您不對此進行過濾,則攻擊者可以將登錄作為登錄,并且必須強制使用您的任何用戶的密碼。人們經常建議使用預準備語句使其100%安全,因為數據不會以這種方式干擾查詢本身。但是對于這樣簡單的查詢,做類似的事情可能會更有效率$login = preg_replace('/[^a-zA-Z0-9_]/', '', $login);


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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