程序员大数据 爬虫Python AI Sql@IT·互联网

SQL注入及其防范

2017-05-07  本文已影响0人  关耳金名

1.什么是SQL注入

在java中无论是使用orm框架还是直接使用JDBC操作数据库我们经常都会碰到拼接字符串的情况,例如以下:

String sql = "select * from tableA where username = " + username + ";";

那么操作输入的字符串username来修改我们的操作数据库语句例如

username = "zhengming; drop table tableB";

那么执行本条语句后tableB表将会被删除,这就是我们常说的SQL注入攻击

2.如何防范

说完了什么是SQL攻击后那么久要说说如何进行防范,主要的防范方法有以下几种:

以下将对前三种防范措施进行说明

严格区分普通用户权限与管理员权限

对于普通用户即应用使用者一般只给予读取权限和部分写权限,至于删除表和删除数据库这样的权限应当予以限制,而对于数据库管理员来说就应当给予更高的权限以便维护数据库

使用参数化语句

无论使用orm框架还是直接使用JDBC操作数据库,只要稍微了解应该都知道占位符的用处即代表此处为一个参数,通过后期设置的方式进行填充

String sql = "select * from tableA where username = ?;"

而后通过set方法进行设置参数

加强对用户输入的验证

其实简单来说就是去验证用户输入的内容是否正确,拒绝包含二进制数据、转义序列和注释字符的输入内容,验证输入内容,只接受需要的内容和需要内数据类型,这样可以有效的防止注入攻击

以上
欢迎关注我的知乎:郑铭
github:github

上一篇 下一篇

猜你喜欢

热点阅读