2010-05-10 47 views
0

我試圖從Java Applet傳遞SQL查詢字符串爲Servlet作爲參數。瀏覽器從請求參數中移除+

問題是,在小程序我有一些說:SQL = SELECT * FROM p其中(+ P = 1)

在Servlet生成的SQL參數是SQL = SELECT * FROM p其中(+ P = 1)。

因此,任何人都知道如何防止瀏覽器從參數中刪除+字符?

是否有轉義字符?

謝謝。

+0

JavaScript在哪裏起作用? – Pops 2010-05-10 14:22:55

回答

3

不要這樣做。這是SQL注入的直接方式(例如,任何用戶都可以將DELETE請求插入get字符串並使服務器崩潰)

+0

是的,我知道......對此無能爲力。 Web應用程序是一個內聯網,所以這是一種解脫。 – Marquinio 2010-05-10 14:11:00

+0

我討厭成爲那些信息安全航天員類型之一,但實際情況是大多數對應用程序的攻擊都是內部的。儘管我的僱主非常棒(ahem),並且永遠不會在員工中引起反感(咳嗽咳嗽),但您的里程可能會有所不同。 – 2010-05-11 16:58:26

3

您可以使用java.net.URLEncoder來實現此目的。

param = URLEncoder.encode(param, "UTF-8"); 

這就是說,整個思路是漏水的,很容易攻擊。人們可以很容易地發現URL並手動發送一個DELETE FROM p給它。而是發送命令作爲參數,而不是完整的SQL查詢。保留並隱藏服務器端的SQL查詢。

+0

嘿,這是個好主意。我會嘗試編碼+。謝謝。 – Marquinio 2010-05-10 14:12:49

+0

不,不僅是'+'。 **整個**參數值。 – BalusC 2010-05-10 14:16:36