是否有可能在內寫刪除查詢Where子句。刪除查詢Where子句
例子:
Select ID,Name From MyTable Where ID IN(Delete From MyTable)
這可能是瘋狂的,但讓我解釋一下我的情況。在我們的報告工具中,我們支持在查詢中輸入SQL。 我們將用我們自己的選擇和從子句查詢和結合用戶的查詢輸入。
實施例:
Select ID,Name From MyTable Where ("Query typed by user")
在這裏,用戶可以鍵入任何種類的其中查詢過濾器..
如果他類型,如ID = 100我們的最終查詢變成這樣
Select ID,Name From MyTable Where (ID=100)
我們的一位客戶問我們,如果有人在查詢過濾器中鍵入刪除查詢,會發生什麼情況。他認爲這可能是安全漏洞..所以我們在我們的開發環境中嘗試過這種可能性。但是sql爲以下查詢返回錯誤。
Select ID,Name From MyTable Where ID IN(Delete From MyTable)
所以最後,我的問題是,有沒有其他的可能性寫刪除查詢內Where子句或選擇條款。如果有可能,我怎麼能限制呢?
是的!如果他們輸入他們的查詢,如「; GO; DELETE FROM MyTable」。有很多變化,所以你真的需要考慮停止SQL注入的方法。避免這種情況的最簡單方法是參數化查詢並將用戶文本作爲參數傳遞。 –
是的,這是非常危險的。他們可以把類似1 = 1;從表中刪除。查找sql注入。 – SQLChao
這是SQL注入,你不應該讓用戶鍵入他/她想要的任何類型的查詢。如果他們添加的查詢是'ID = 100);從MyTable中刪除;'? – Lamak