gpt4 book ai didi

java - 错误代码 : Why is this dangerous?

转载 作者:IT老高 更新时间:2023-10-28 21:01:16 25 4
gpt4 key购买 nike

Possible Duplicate:
Can I protect against SQL Injection by escaping single-quote and surrounding user input with single-quotes?

     String badInput = rawInput.replace("'","''");
ResultSet rs = statement.executeQuery("SELECT * FROM records WHERE col1 = '"+badInput+"'";

有什么方法可以对这段代码进行类似“Bobby Tables”的攻击吗?

最佳答案

根据所有必须解释命令的过程中的不同步骤,可能有一些可能性传递 %27 (例如)并让它充当单引号,不被注意地传递通过你的替换。

但是即使可以涵盖所有这些情况,并且对于这一个问题实际上是安全的,它的不足之处在于它不能统一执行。其他人可能会出现并想要添加 AND int1 = var1,并注意到您已经考虑过 SQL 注入(inject),因此他们只是按照您的确切方式修改代码

String badInput = rawInput.replace("'","''");
String badInteger = rawInteger.replace("'","''");
ResultSet rs = statement.executeQuery("SELECT * FROM records WHERE" +
"int1 = " + badInteger + " OR col1 = '"+badInput+"'");

...只有整数,它不再是你想要保护自己的引号!在这里,很明显任何事情都可能出错。因此,虽然这是一个需要有人实现得不好的问题,但我认为这是设计中最大的问题——它只涵盖了一小部分情况。

最好只说“以下是一个变量。无论它包含什么,都将其视为一个值,并且不要尝试将其部分用作代码并执行该代码。”

p>

关于java - 错误代码 : Why is this dangerous?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3265391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com