美文网首页
防范sql注入值得注意地方

防范sql注入值得注意地方

作者: Sunday_1024 | 来源:发表于2019-10-31 10:08 被阅读0次

sql注入是大家基本都清楚,一般来说用参数化就能解决注入的问题,也是最好的解决方式。
有次技术群里问到一个问题,如下图


问题描述

很显然tableName是外部传递过来的,暂时不考虑具体的业务环境,但如果以select * from @table 把表名称当参数肯定是不能执行的,如果是拼接sql会有注入的危险。那么此情况怎么才能避免sql注入?
后来想到一个方式,如下图


exec执行sql
看起来用到了参数化,应该没有注入的危险吧?那就写例子试试看
测试exec方式
结果很不好,测试表tb还是被注入了数据。为什么会这样?其实仔细分析下,这种写法是数据库端进行sql拼串,基本上越过了参数化。

要不进行字符串过滤吧,那好我写个replace方法,比说过滤一些sql关键词:select ,insert, .....等等。把这些关键词替换成""(空字符串),但这方式还有个漏洞 :举个例子,sSELECTelect 被替换后,就变成了select,还是有关键词。为了避免这种情况的发生,建议把关键词替换成空格而不是空字符串,这样sSELECTtelect 替换关键词为空格,就变成了 s elect,基本上算是安全一些了。推荐防范sql注入,最好还是参数化。

再回过头怎么解决刚才那个问题,怎么查传递过来的表名称,可以使用系统表查表


根据系统表查询表名称是否合法,合法再执行sql

上图代码有再优化的可能,不在本文讨论范围内

总结:

1 推荐使用参数化的方式解决sql注入问题。如果用到了参数化,避免数据库内部再拼串执行sql的可能。
2 过滤数据库关键词,最好替换成空格!

相关文章

  • 防范sql注入值得注意地方

    sql注入是大家基本都清楚,一般来说用参数化就能解决注入的问题,也是最好的解决方式。有次技术群里问到一个问题,如下...

  • 面试官问你 SQL 注入攻击了吗?

    为什么要聊 SQL 注入攻击? 什么是 SQL 注入攻击? 如何进行 SQL 注入攻击? 如何防范? 常见面试题 ...

  • Java安全编程指南

    SQL注入防范 SQL注入指利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的攻击方法。Java程...

  • Django 常见Web攻击

    1、sql注入攻击与防范 sql注入是黑客攻击数据库最常用的手段。sql注入的危害: 非法读取、篡改、删除数据库中...

  • java安全编码指南之:输入注入injection

    简介 注入问题是安全中一个非常常见的问题,今天我们来探讨一下java中的SQL注入和XML注入的防范。 SQL注入...

  • 谈谈sql注入之防范(四)

    了解了SQL注入的方法后,如何能防止SQL注入?如何进一步防范SQL注入的泛滥?怎么通过一些合理的操作和配置来降低...

  • SQL注入与防范

    在web应用架构下,终端用户无法直接访问数据库,需要通过http请求到java应用服务器,然后由java应用服务器...

  • SQL注入及其防范

    1.什么是SQL注入 在java中无论是使用orm框架还是直接使用JDBC操作数据库我们经常都会碰到拼接字符串的情...

  • SQL注入实战篇

    今天要介绍的是SQL注入实验。SQL注入攻击的学习,我们更多的目的是为了学习攻击技术和防范策略,而不是刻意去攻击数...

  • JDBCtemplate防范Sql注入攻击

    SQL 注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的...

网友评论

      本文标题:防范sql注入值得注意地方

      本文链接:https://www.haomeiwen.com/subject/qoszvctx.html