您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

这个简单的字符串转义符可以防止任何SQL注入吗?

这个简单的字符串转义符可以防止任何SQL注入吗?

一种攻击方法是“加载”攻击。

首先,您将用户名,银行转帐消息作为用户名注入

传输0.01 到:02020.020202.200202 名称:johnny table’; drop table foob??ar-

会逃到

johnny tables\';drop table foobar  --

到目前为止,一切都很好。有效的保护。我们的附加失败。我们尝试加载攻击。

现在,我们要安排一个预定的付款订单。

假设发生一个常见错误,该错误一旦插入数据库,便是“安全的”,因为已经对其进行了一次检查。

转移0.01 到:02020.020202.200202 名称:johnny table’; drop table foobar– 时间表:从现在开始1天

将订单存储在数据库

'johnny tables\';drop table foobar--'

将存储为

johnny table’; drop table foobar–

现在,在午夜,计划程序启动并开始迭代计划的付款

select name from scheduled where time > x and < y

所以银行代码开始崩溃

String name = result['name'];
String acct = result['acct'];
String amt = result['amt'];
string query = "insert into payment_process (name,acct,amt) values('"+name+"','"+acct+"','"+amt+"');

和繁荣,你的桌子掉了。 *

当您走手工路线时,必须确保变量的所有实例都被转义,所有unicode字符都被考虑了,数据库引擎的所有惯性都被考虑了。

同样,使用准备好的语句可以大大提高速度,因为您不必重建查询。您只需构建它们一次,将它们存储在缓存中,然后换出参数即可。 尤其是当迭代大列表时,它们是天赐之物。

问题的根源在于,他可能不明白预处理语句,并没有 得到 他们,他们是如何工作的。引发不安全感可能会以某种方式进行侵略和保护,甚至是狂热,只是为了防止承认您只是不知道它们是如何工作的。 尝试与他谈谈,如果他不想听原因,去找他的经理并解释问题,如果网站/应用程序被黑客入侵,它将在您的同事和您的头上经理,告诉他风险是巨大的。指出最近的黑客攻击,其中有很多钱像快速黑客一样被盗。

* 可能无法实际运行,具体取决于实际查询,联接,联合等。这是一个非常简单的示例

SQLServer 2022/1/1 18:37:41 有471人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶