2014-01-24 67 views
5

假設我有一個向公衆開放的網站,一些JS生成一個傳遞給服務器的SQL LIKE模式。有沒有像不安全的LIKE模式這樣的事情?

服務器使用該表達而不在SELECT命令驗證它:因爲該模式被傳遞作爲參數

SELECT ... WHERE (User has rights to this record) AND (field) LIKE @LikePattern 

SQL injection將不再是一個問題。使用'%'作爲模式不是問題,因爲AND的左側限制找到的記錄。 ('%'甚至可能是由JS生成的模式之一。)

無效模式可能會導致錯誤,但只要我的代碼已準備好處理從SQL客戶端庫拋出的異常,無效模式不應該造成不利的情況。 (不是嗎?)

是否存在惡意或不安全的LIKE模式? (可能會導致循環或需要不合理數量的處理或導致計劃外的鎖定的模式?)

+0

這是用於任何SQL數據庫系統還是特定的? 'LIKE'可能有系統特定的擴展。 –

+6

請始終包含您正在使用的DBMS(Postgres,Oracle,...)。我認爲''%''是一個「不安全」的模式,因爲它實質上意味着:「讓我從該表中的所有行」。現在,如果該表包含1億行,那麼您的應用程序能夠處理該行嗎?如果沒有,這可以用於DoS攻擊 –

+0

我不知道我將要使用哪個DBMS,所以我現在堅持使用標準SQL。 – billpg

回答

1

不,沒有任何LIKE模式比簡單的"%"更「不安全」當然匹配所有有效的行。

這當然假設您對任何純文本字段可能存在的SQL注入錯誤都有足夠的保護。

相關問題