专栏首页程序员备忘录Mysql学习笔记(三) - Sql中的安全问题

Mysql学习笔记(三) - Sql中的安全问题

很多时候开发人员只关系系统的功能的实现,很多系统开发人员甚至sql的安全全然不知,那么在开发中的sql具体有哪些注意点?这里我们就跟随笔者一起看看sql注入和相关的防范措施吧!

sql注入简介

sql注入就是利用系统接口将用户提交的数据插入数据库的过程中添加一些语法合适但是却违背接口提供功能的正常的执行sql过程。主要产生的原因是没有对用户提交的数据进行严格的过滤,导致非法sql语句的执行。

sql注入危害极大,攻击者可以利用它读取、修改或者删除数据库中的数据,获取用户名和密码等信息。甚至可以获取到数据库管理员的权限。当然sql注入也很难防范。

sql注入实例

对于一个信息系统来说或post或get请求,然后上送一些检索条件语句,这些条件语句如果没有处理直接拼接到sql的where条件上就会存在sql注入的问题,比如对于对于select * from user_Info where user_name={userName} and password={password}的sql来说,如果前端的接口上送的用户名称为userName=%%’ limit 1 #(#和*表示注释掉后边的sql) 然后密码随便输入,这样就得到了系统的第一个账户并登录成功,当然对一些恶意攻击者甚至会执行delete或者drop等命令。所以说sql注入对开发来说是一个重要的话题。

应对措施

1、prepareStatement

在java中使用prepareStatement可以对上送的条件中的特殊字符进行转义,从而使的上送的非法sql操作变成字符串(添加转义符号\)。一般来说的操作过程如下:

prepare=con.prepareStatement(sql);
prepare.setString(userName,name);
prepare.setString(password,password);
rs=prepare.executeQuery();

2、自定义函数进行校验

对用户提交数据的已知的非法字符的校验,只接收已知的合法的输入。当然对于空格的检测和注释符号#的判断是至关重要的,在校验的时候可以对空格和注释符号进行过滤将过滤很多sql攻击。当然也要注意过滤十六进制的表示%XX

本文分享自微信公众号 - 程序员备忘录(gh_a84f9a607848),作者:tianjl

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python对数据库操作(以拉取股票入库为例)

    获取股票数据的时候我们采用的是baostack。您需要安装baostack的python包,除此之外我们采用的数据库驱动为pymysql,orm框架采用sqla...

    程序员_备忘录
  • Python对数据库操作(以拉取股票入库为例)

    获取股票数据的时候我们采用的是baostack。您需要安装baostack的python包,除此之外我们采用的数据库驱动为pymysql,orm框架采用sqla...

    程序员_备忘录
  • MySql学习笔记(四) - Sql优化

    Sql每天都在查,但是sql优化的边界你了解吗?、在一般的认识里数据库就是一个黑箱,我把sql扔进去,它把结果返回来,至于sql优化貌似很遥远的地方,直到系统好...

    程序员_备忘录
  • python实现一次性封装多条sql语句(begin end)

    因为业务需求,优化模型运行时间。考虑到sql语句每一次执行都要建立连接,查询,获取数据耗时过多。就想到将sql一起提交上去运行,能够节省很多时间。原本1.6-2...

    砸漏
  • 从python读取sql的实例方法

    以上就是从python读取sql的实例方法的详细内容,更多关于如何从python读取sql的资料请关注ZaLou.Cn其它相关文章!

    砸漏
  • Oracle AWR 阙值影响历史执行计划

          最近有网友提到为什么在dba_hist_sql_plan中无法查看到sql语句的历史执行计划,对于这个问题是由于缺省情况下,Oracle 设定的阙值...

    Leshami
  • pl sql 查看历史执行过的sql记录

    现在越来越多人用plsql 查询和执行sql,因为该工具很方便,不仅可以执行sql、以及命令窗口,但是呢,有时候我们执行完sql,可能忘记保存或者当时觉得可能不...

    小小鱼儿小小林
  • sql格式化工具

    该工具支持oracle、mysql、sql server等关系型数据库,能让你看到sql美化后的清晰的结构,可运用于对复杂SQL语句的分析或者是程序代码优化上,...

    ixiaoyang8
  • Python sql注入 过滤字符串的非法字符实例

    以上这篇Python sql注入 过滤字符串的非法字符实例就是小编分享给大家的全部内容了,希望能给大家一个参考。

    砸漏
  • JDBC的基本使用流程

    JDBC的基本使用流程: 1 导入jar包: 导入ojdbc6.jar,在项目上右键 builder path–>add to builder path. ...

    葆宁

扫码关注云+社区

领取腾讯云代金券