zoukankan      html  css  js  c++  java
  • 防止sql注入的方法

    防止sql注入从前端的页面到后台可以分为以下几个办法:

    1.在前端页面就可以用js过滤数据

    要引入的包:

    import Java.util.regex.*;

    正则表达式:

    private String CHECKSQL = “^(.+)\sand\s(.+)|(.+)\sor(.+)\s$”;

    判断是否匹配:

    Pattern.matches(CHECKSQL,targerStr);

    下面是具体的正则表达式:

    检测SQL meta-characters的正则表达式 :

    /(\%27)|(’)|(--)|(\%23)|(#)/ix

    修正检测SQL meta-characters的正则表达式 :/((\%3D)|(=))[^ ]*((\%27)|(’)|(--)|(\%3B)|(:))/i

    典型的SQL 注入攻击的正则表达式 :/w*((\%27)|(’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix

    检测SQL注入,UNION查询关键字的正则表达式 :/((\%27)|(’))union/ix(\%27)|(’)

    检测MS SQL Server SQL注入攻击的正则表达式:

    /exec(s|+)+(s|x)pw+/ix 

    2.后台可以使用预编译,参数化查询的方法防止sql注入

    采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。

    使用好处:

    (1).代码的可读性和可维护性.

    (2).PreparedStatement尽最大可能提高性能.

    (3).最重要的一点是极大地提高了安全性.

    原理:

    sql注入只对sql语句的准备(编译)过程有破坏作用

    而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,

    而不再对sql语句进行解析,准备,因此也就避免了sql注入问题. 

    3.对密码一类敏感的信息不要直接明文存储,可以采用MD5或hash加密

    4.异常信息不要直接抛出给用户,最好自定义处理异常信息的类,因为异常信息里也包括关于服务器的一些信息可能被利用。

  • 相关阅读:
    对模拟器虚假设备识别能力提升15%!每日清理大师App集成系统完整性检测
    教你实现华为快应用深色主题适配
    如何实现一个malloc
    如何提高团队管理能力?
    大型网站架构演变和知识体系
    call_user_func 和 call_user_func_array用法
    源码研究:php变量
    http协议简介
    用c语言实现http请求
    用socket写一个简单的客户端和服务端程序
  • 原文地址:https://www.cnblogs.com/blythe/p/7434753.html
Copyright © 2011-2022 走看看