如果我们使用准备好的语句或参数化查询等最安全的方式执行查询来防止SQL注入攻击,是否可以保证执行时不会发生任何数据库错误?例如,在插入记录时为给定类型发送无效参数,导致错误而不是使用默认值。你能举个例子吗?
问问题
110 次
3 回答
0
这取决于您使用的数据库,但通常是的,根据类型发生的转换通常是隐式的,因此您可以很好地传递在运行时可能会失败的字符串以转换为正确的值。
就 SQL 注入攻击而言,只要您不希望参数包含您随后动态调用的 SQL,您就是安全的。
于 2012-02-05T14:26:18.203 回答
0
不,不能保证某些运行时错误(想想,如果没有别的,就是“触发”)会消失。
于 2012-02-05T14:26:53.270 回答
0
一个示例,参数化查询不能防止数据库错误是用户可以提供输入,只要它不适合数据库类型,例如用户名字段中限制为 50 个字符的 100,000 字文章。
此外,参数化查询无法防止重复的主键错误,例如,他们在注册表单上请求的用户名已经被使用。
参数化查询仅确保值不会被解释为 SQL,它不会阻止任何其他形式的错误(例如 SQL 语句因数据库磁盘空间不足而失败)
于 2012-02-05T14:28:33.453 回答