很抱歉,如果這似乎是一個愚蠢的問題,但我閱讀有關SQL注入和這樣的狀態的提及的情形,一個SQL命令如爲什麼WHERE「」=「」是真的?
SELECT *
FROM Users
WHERE Name ="" or ""=""
AND Pass ="" or ""=""
將是有效的,返回的所有記錄中的一個表用戶。我明白背後的邏輯做這樣的事情
SELECT *
FROM Users
WHERE UserId = 105 or 1=1
,但我似乎無法找出原因""=""
將是一個真實的陳述。我對SQL一般都很陌生,我已經搜索了一個答案,但大多數SQL注入的例子只提到了1 = 1的例子。
blank = blank應該是正確的?爲什麼不是這樣? – ryanyuyu
'「」=「」'無效SQL,因爲雙引號是標識符,而不是字符串文字。所以'「」=「」'會比較兩列 - 但是用「空名稱」。 –
@a_horse_with_no_name在ANSI SQL中爲true,但在SQL服務器的所有實現中均爲true。 –