前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql学习笔记(三) - Sql中的安全问题

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

作者头像
写一点笔记
发布2020-11-02 14:18:18
4970
发布2020-11-02 14:18:18
举报
文章被收录于专栏:程序员备忘录程序员备忘录

很多时候开发人员只关系系统的功能的实现,很多系统开发人员甚至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操作变成字符串(添加转义符号\)。一般来说的操作过程如下:

代码语言:javascript
复制
prepare=con.prepareStatement(sql);
prepare.setString(userName,name);
prepare.setString(password,password);
rs=prepare.executeQuery();

2、自定义函数进行校验

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员备忘录 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档