我只是偶然發現了一個同事的SQL代碼(我們有一個」不修復它,如果它不破壞策略「),登錄過程。 名稱變量由一個輸入字段從JSP在所有交付當<>「'%;()被刪除時SQL注入是否可能?
//BAD CODING ALERT: DONT USE THIS CRAPPY CODE, YOU NAUGHTY COPY PASTERS!
Query q = em.createQuery("select object(u) from User as u where u.name = '" + name + "'");
在沒有衛生設施的name
變量除了服務器端驗證上一些非法字符:<>"'%;()
(記住,是單雙報價)
這可以被利用嗎?如果是的話,怎麼樣?
如果它不是爲單引號和雙引號,我們可以這樣做:blah' OR 'x'='x
你會如何處理O'Reilly這個名字的用戶? – Olaf
必須的XKCD鏈接http://xkcd.com/327/ –
如果em代表EntityManager,那可能意味着您有可能使用JPA。實際上,如果您直接使用JPA或Hibernate,那麼他究竟爲什麼要連接這樣的SQL語句?相反,使用'Query'提供的方法,讓框架管理消毒。 – Gamb