gpt4 book ai didi

java - 这个查询可以进行 SQL 注入(inject)吗?

转载 作者:行者123 更新时间:2023-12-01 06:30:05 25 4
gpt4 key购买 nike

UPDATE `company` SET `itnumber` = '595959' WHERE (id = 932) 

因此 itnumber 的值来自该公司的用户输入。我想确保我能够防止任何类型的 sql 注入(inject)。因此,用户输入 595959,我在动态查询中将该值构建为“595959”。这个查询中还可能存在sql注入(inject)攻击吗?我知道使用prepare语句来防止sql注入(inject),但是prepare语句可能需要我的应用程序进行大量的开发工作,所以我正在寻找耗时更少且更简单的方法来修复大多数可能注入(inject)的sql语句.

StringBuffer sb = new StringBuffer();
sb.append(" UPDATE ");
sb.append(DB.quote(table));
sb.append(" SET ");
/* logic if column value has changed */
/* if yes */
sb.append(DB.quote(column.name));
sb.append(" = ");
sb.append(column.getSQLvalue());
sb.append(" WHERE (id = ");
sb.append(columns[0].getSQLvalue());
sb.append(")");
execute(sb.toString());

最佳答案

如果您只是将输入连接到 SQL 字符串而不进行任何清理(并且简单地将其用单引号 ' 括起来并不能使其干净),那么是的,它很容易受到 SQL 注入(inject)的攻击.

请发布构建此 SQL 的代码以获得明确的答案。

<小时/>

更新:

由于您使用的是 Oracle SQL 库中的 getSQLvalue(),因此这将确保传入的值正确转义。这确实可以避免 SQL 注入(inject),但是它要求您记住在每个地方都使用它。但是,使用参数可以确保相同的效果,而且不会有忘记转义 SQL 值的风险。

关于java - 这个查询可以进行 SQL 注入(inject)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147217/

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