Epa*_*aga 19 java sql security sql-injection
String badInput = rawInput.replace("'","''");
ResultSet rs = statement.executeQuery("SELECT * FROM records WHERE col1 = '"+badInput+"'";
Run Code Online (Sandbox Code Playgroud)
有没有办法对这段代码进行" Bobby Tables "式攻击?
Dav*_*und 10
根据所有必须解释命令的不同步骤,可能有一些可能传递%27(例如)并使其作为单引号,通过替换而不被注意.
但即使可以涵盖所有这些案例,而且这个单一问题实际上是安全的,但它缺乏一致性,因为它不能一致地实施.其他人可能会加入并希望添加AND int1 = var1,并注意到您已经考虑过SQL注入,因此他们只是以您拥有的确切方式修改代码
String badInput = rawInput.replace("'","''");
String badInteger = rawInteger.replace("'","''");
ResultSet rs = statement.executeQuery("SELECT * FROM records WHERE" +
"int1 = " + badInteger + " OR col1 = '"+badInput+"'");
Run Code Online (Sandbox Code Playgroud)
...只有整数,它不再是你要保护自己的引用!在这里,很明显看到任何事情都可能出错.因此,虽然这是一个需要有人很难实现它的问题,但我认为这是设计中最大的问题 - 它只涵盖了一小部分案例.
最好能够只是说"以下是一个变量.无论它包含什么,将它视为一个值,并且不要试图将它的一部分用作代码并执行该代码."
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |