zoukankan      html  css  js  c++  java
  • java开发中sql注入正则表达式检测

    sql拼装过程中有时候需要把特殊外部的参数拼装到sql语句中去,若不检测外部传入的参数是否含有sql关键词,黑客利用系统这个漏洞注入sql脚本语句进行数据库删除或盗取数据资料。

    sql关键词脚本检查正则表达式

    (and|exec|insert|select|drop|grant|alter|delete|update|count|chr|mid|master|truncate|char|declare|or)|(*|;|+|'|%)

    Java语言

    /**
     * 是否含有sql注入,返回true表示含有
     * @param obj
     * @return
     */
    public static boolean containsSqlInjection(Object obj){
        Pattern pattern= Pattern.compile("\b(and|exec|insert|select|drop|grant|alter|delete|update|count|chr|mid|master|truncate|char|declare|or)\b|(\*|;|\+|'|%)");
        Matcher matcher=pattern.matcher(obj.toString().toLowerCase()); 
    return matcher.find(); }

    单元测试

    @Test
    public void testContainsSqlInjection(){
        boolean b1=SqlUtils.containsSqlInjection("and nm=1");
        assertEquals("b1不为true",true,b1);
        boolean b2=SqlUtils.containsSqlInjection("niamsh delete from ");
        assertEquals("b2不为true",true,b2);
        boolean b3=SqlUtils.containsSqlInjection("stand");
        assertEquals("b3不为false",false,b3);
        boolean b4=SqlUtils.containsSqlInjection("and");
        assertEquals("b4不为true",true,b4);
        boolean b5=SqlUtils.containsSqlInjection("niasdm%asjdj");
        assertEquals("b5不为true",true,b5);
    }

    转载:

    https://blog.csdn.net/weixin_44568561/article/details/91867981

  • 相关阅读:
    [LeetCode]Linked List Cycle
    ACM 整数划分(四)
    ACM 子串和
    ACM 阶乘之和
    ACM 组合数
    ACM 阶乘的0
    ACM 比大小
    ACM 擅长排列的小明
    ACM 重建二叉树
    cocos2dx 魔塔项目总结(一)
  • 原文地址:https://www.cnblogs.com/songshuai/p/11017291.html
Copyright © 2011-2022 走看看