2016-11-18 43 views
1

我知道這聽起來很奇怪,我當然可以解決我的問題。我使用SQL服務器端代碼和語句類似於以下內容:即使存在WHERE子句時也要選擇所有事實

SELECT myCol FROM mytable WHERE myCol2=url_parameter 

url_parameter是通過URL傳遞的字符串。有什麼辦法可以將url_parameter設置爲某種東西,但仍然可以獲得表格中的所有事實?

+0

什麼牌子的SQL? –

+0

如果你有能力破解它,有sql注入技巧,你可以做一些像url_parameter ='whatever或1 = 1'的東西。 HACK是操作詞。如果這確實起作用,那麼你有更多的擔憂。 – RThomas

回答

1

正常的方式來處理,這是由具有查詢,看起來像:

SELECT myCol 
FROM mytable 
WHERE myCol2 = url_parameter OR url_parameter IS NULL; -- or url_parameter = ''; 

如果你改寫(munging)的SQL字符串,而不是傳遞一個參數,你可以插入值myCol2(不帶引號)時你想獲得所有的價值。但是,您應該使用參數。

1

不應該有;如果存在,那麼服務器端的寫入方式將允許SQL注入攻擊,這可能比您想要解決的問題更大。

如果您能夠修改服務器端代碼,那麼您可以通過運行沒有WHERE條件的查詢變體來響應某些參數值或參數值組合。或者還有其他的選擇......但你已經說過你可以解決它,所以我假設你有一個想法。

+0

謝謝,我本可以通過傳遞戈登的解決方案,但它會很難看,而且根據你的說法,它很脆弱。當我需要沒有WHERE的查詢時,我只創建了另一個類,因爲我可以使查詢動態化。 – aless80