2011-04-05 57 views
1

我已經爲PHP和mySQL中的項目創建了一個簡單的登錄表單。我閱讀關於SQL注入和XSS的安全和信息。 如何用這些東西測試我的表單?我的意思是我把它放在哪裏? 我發現這樣的事情' or 1=1–和SQL查詢,如如何測試我的簡單mysql登錄表單的SQL注入?

SELECT fieldlist 
    FROM table 
WHERE field = '$EMAIL'; 

我知道這是一個愚蠢的問題,但我不知道答案!

回答

0

輸入input = $EMAILasdf' or '1'='1在輸入並提交,看看你是否得到真正的結果。

所以生成的查詢是

SELECT fieldlist 
    FROM table 
WHERE field = 'asdf' or '1'='1'; 

要檢查,如果密碼不空。

if(!isset($_POST['password'])) 

而且這樣做會比較好,如果

$username = trim($_POST['username']); //also turn magic quotes 
      //or add slashes to prevent sql injection 

$password = md5(trim($_POST['username'])); //encrypt the password 


SELECT * 
FROM user 
WHERE username = `$username` AND 
password = `$password` LIMIT 1; 

if(mysql_num_rows($result)) //if the count is 1, then, the the user exists 
//do the login 
+0

在用戶名或密碼字段? – EnexoOnoma 2011-04-05 04:21:27

+0

@Punkis同時檢查,如果你有魔術引號關閉或 – 2011-04-05 04:21:50

+0

另一個小問題。我有一個你輸入密碼的頁面。然後登錄頁面檢查密碼(abcdef)是否與我在表單中寫入的密碼相同。 abcdef不是編碼,只是一個簡單的if語句。 – EnexoOnoma 2011-04-05 04:29:24

0

你會提交可疑的字符串到您的登錄表單。

從那裏,字符串' or 1=1-(或任何你想測試的)將被髮送到你的服務器,而PHP如果設置不當,會直接將該字符串發送到你的MySQL數據庫中,如果它是有效的SQL,將被執行。

+0

嗨,在用戶名或密碼箱? – EnexoOnoma 2011-04-05 04:21:44

+0

@Punkis:兩者。還有其他地方你接受用戶輸入。 – 2011-04-05 04:26:47

+0

另一個小問題。我有一個你輸入密碼的頁面。然後登錄頁面檢查密碼(abcdef)是否與我在表單中寫入的密碼相同。 abcdef不是編碼,只是一個簡單的if語句。 – EnexoOnoma 2011-04-05 04:28:59