2011-06-30 79 views
2

我有一個由2個字段(標題和註釋)組成的註釋表單。數據庫包含3列ID,標題和評論。評論是基於它的title像domain.com/index.php?id=sometitle註釋字段中的sql注入

標題字段被正確地固定使用mysql_real_escape_string SQL注入,但註釋字段是一個textarea處於打開狀態沒有逃脫顯示。我可以逃避它,但是我想知道它可以做些什麼,只要不在該字段上使用mysql_real_escape_string就可以了,因爲知道標題已經被轉義並且它是如何獲取輸出的。

+1

「我想知道它可以做些什麼,只是不使用該字段上的mysql_real_escape_string就可以做到這一點」 - 您對您的數據有多重要? –

+1

MySql中沒有參數化查詢嗎? –

+0

@mitch。這不是問題。我問,所以我知道這是如何工作的。 – Pinkie

回答

7

如果有人在你的textarea中鍵入了這個字符會發生什麼。

some comment');DELETE FROM COMMENTS;-- 

如果查詢插入註釋是像

INSERT INTO Comments(Title,Comment) VALUES('$title','$comments'); 

那麼你將有一個問題。結果查詢將

INSERT INTO Comments(Title,Comment) VALUES('some title','some comment');DELETE FROM COMMENTS;--' 

或將其佈局在一個更可讀的格式

INSERT INTO Comments(Title,Comment) VALUES('some title','some comment'); 
DELETE FROM COMMENTS;--' 

的 - 」在剛剛結束創建了一個評論,擺脫任何額外的SQL的那會使其不能正確解析。

+0

感謝您的解釋。我現在明白了。 – Pinkie

2

所有未轉義的字符串都可以用來注入SQL。

+0

如果沒有我的問題的例子,我無法理解這一點。評論欄如何幹擾注射。 – Pinkie

+0

咦?我不知道你的問題是什麼。兩個領域沒有區別。 – SLaks

+1

如果我的評論是類似「真是太棒了」);丟表; - '網站!那麼你會遇到麻煩。 –

2

如果有人在textarea中使用SQL注入,它將在數據提交到數據庫時運行,這就是爲什麼您先將其轉義。

+0

如何插入註釋字段導致sql注入。我們正在談論輸入而不是輸出。 – Pinkie

+0

http://en.wikipedia。org/wiki/SQL_injection – steve

+2

給我鏈接到您的網站。我會告訴你...... –

2

逃脫它。假設用戶是發表評論的用戶,那麼您在註釋部分注入時很容易受到攻擊,這些註釋部分將在表單發佈後執行,而不是請求查看註釋。

2

不要讓該字段未轉義。這個領域與什麼聯繫並不重要。在查詢形成時,注入器可以返回密碼字段等。

要真正清除任何使用sql注入的嘗試,您需要使用存儲過程。如果你有權訪問它,你應該使用PDO