我只是偶然发现了一个同事的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