gpt4 book ai didi

sql - 只有字母和数字的字符串可以注入(inject) SQL 语句

转载 作者:行者123 更新时间:2023-12-03 22:32:30 31 4
gpt4 key购买 nike

我是SQL注入(inject)的新手,看了一些文章,很多黑客可能会使用';'和空格''在他们的输入,例如:

(1) username = '123;drop table account'

(2) 用户名​​ = '123 and 1=1'

但问题是,如果我们只允许用户在客户端输入字母(大写和小写)和数字,不允许任何其他字符,如空格,分号,是否存在任何字符串可以注入(inject)SQL语句? ?如果是这样,谁能给我一个例子?谢谢!

请注意,我没有问客户端是否可以防止SQL注入(inject),我只是想知道这种带有字母和数字的字符串是否只存在用于进行SQL注入(inject)。

最佳答案

首先,您在客户端所做的任何事情都可以被绕过。记住这一点的最简单方法是将“客户端”替换为“在攻击者的计算机上,他们可以完全控制”。

在网站的特定情况下,这可能就像攻击者在浏览器上按 F12 并编辑页面一样简单,或者可能需要他们使用其他方式制作 HTTP 请求,但您能做的最多在他们弄清楚的时候让他们慢几分钟。 您无法控制攻击者可以尝试向您发送哪些数据。

其次,我想不出只使用数字和非重音字符的攻击,但这并不意味着没有。另一方面,我想不出很多地方以这种方式限制输入仍然会产生有用的功能。基于白名单的验证(在服务器端)当然有它的位置,但是需要为每个场景提供正确的白名单,这使得它成为一种尴尬的安全机制。

因此,您最好首先确保在使用数据的任何地方都使用正确的转义(转义总是关于输出/使用,而不是关于输入/source),并尽可能将数据与代码分开(例如,使用参数化查询而不是在 SQL 字符串中包含数据)。一旦你有了这个工作,基于白名单的验证可能是一个明智的额外步骤。

关于sql - 只有字母和数字的字符串可以注入(inject) SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51233585/

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