SQL注入及其防范

作者: 关耳金名 | 来源:发表于2017-05-07 20:57 被阅读0次

    1.什么是SQL注入

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

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

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

    username = "zhengming; drop table tableB";
    

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

    2.如何防范

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

    • 严格区分普通用户权限与管理用户权限
    • 使用参数化语句(即使用占位符)
    • 加强对用户输入内容的验证
    • 使用专业的软件对SQL漏洞进行扫描

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

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

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

    使用参数化语句

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

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

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

    加强对用户输入的验证

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

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

    相关文章

      网友评论

        本文标题:SQL注入及其防范

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