我試圖證明在PHP中需要準備好的語句,但是我遇到了一些問題,因爲PHP通過表單傳入字符串時會做一些非常奇怪的事情。PHP表單的SQL注入威脅?
聲明我正在「破發」是一個簡單的:
SELECT username FROM users WHERE username = '$username' AND password = '$password'
但是做這樣的事情在X' or TRUE;--
傳遞的密碼不實際工作,因爲PHP自動轉義單引號和原來的語句轉換成:
SELECT username FROM users WHERE username = '$username' AND password = 'X\' or TRUE;--'
,密碼平等仍然因爲逃過單引號完好。這種說法是否被認爲是安全的如果不是,它怎麼能被打破?
就我個人而言,我會從表單中輸入MD5密碼以避免注入,然後將其與數據庫中的密碼進行比較。這只是我而已。 –
@WilliamIsted:是的,我在使用真實應用程序時使用SHA-2;這只是一個假設的查詢。 – Jengerer