广告
返回顶部
首页 > 资讯 > 精选 >web项目如何防sql注入
  • 249
分享到

web项目如何防sql注入

2024-04-02 19:04:59 249人浏览 薄情痞子
摘要

WEB项目防sql注入的方法:可以通过一个Filter来防止SQL注入,例如:package com.tarena.dingdang.filter;import java.io.IOException;import&nb

web项目如何防sql注入

WEB项目sql注入的方法:

可以通过一个Filter来防止SQL注入,例如:

package com.tarena.dingdang.filter;

import java.io.IOException;

import java.util.Enumeration;

import javax.servlet.Filter;

import javax.servlet.FilterChain;

import javax.servlet.FilterConfig;

import javax.servlet.ServletException;

import javax.servlet.ServletRequest;

import javax.servlet.ServletResponse;

import javax.servlet.Http.httpservletRequest;

public class AntiSqlInjectionfilter implements Filter {

public void destroy() {

// TODO Auto-generated method stub

}

public void init(FilterConfig arg0) throws ServletException {

// TODO Auto-generated method stub

}

public void doFilter(ServletRequest args0, ServletResponse args1,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest req=(HttpServletRequest)args0;

HttpServletRequest res=(HttpServletRequest)args1;

//获得所有请求参数名

        Enumeration params = req.getParameterNames();

        String sql = "";

        while (params.hasMoreElements()) {

            //得到参数名

            String name = params.nextElement().toString();

            //System.out.println("name===========================" + name + "--");

            //得到参数对应值

            String[] value = req.getParameterValues(name);

            for (int i = 0; i < value.length; i++) {

                sql = sql + value[i];

            }

        }

        //System.out.println("============================SQL"+sql);

        //有sql关键字,跳转到error.html

        if (sqlValidate(sql)) {

            throw new IOException("您发送请求中的参数中含有非法字符");

            //String ip = req.getRemoteAddr();

        } else {

            chain.doFilter(args0,args1);

        }

    }

//效验

protected static boolean sqlValidate(String str) {

   str = str.toLowerCase();//统一转为小写

   String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|*|%|chr|mid|master|truncate|" +

     "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +

     "table|from|grant|use|group_concat|column_name|" +

           "infORMation_schema.columns|table_schema|uNIOn|where|select|delete|update|order|by|count|*|" +

           "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";//过滤掉的sql关键字,可以手动添加

   String[] badStrs = badStr.split("\\|");

   for (int i = 0; i < badStrs.length; i++) {

       if (str.indexOf(badStrs[i]) >= 0) {

           return true;

       }

   }

   return false;

}

}

在web.xml文件中进行配置,如:

<!-- 防止SQL注入的过滤器 -->

<filter>

<filter-name>antiSqlInjection</filter-name>

<filter-class>com.tarena.dingdang.filter.AntiSqlInjectionfilter</filter-class>

</filter>

<filter-mapping>

<filter-name>antiSqlInjection</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

--结束END--

本文标题: web项目如何防sql注入

本文链接: https://www.lsjlt.com/news/114348.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • web项目如何防sql注入
    web项目防sql注入的方法:可以通过一个Filter来防止SQL注入,例如:package com.tarena.dingdang.filter;import java.io.IOException;import&nb...
    99+
    2022-10-08
  • 防止web项目中的SQL注入
    目录一、SQL注入简介二、SQL注入攻击的总体思路三、SQL注入攻击实例四、如何防御SQL注入1、检查变量数据类型和格式2、过滤特殊符号3、绑定变量,使用预编译语句小结:一、SQL注...
    99+
    2022-11-12
  • Java项目如何防止SQL注入
    今天小编给大家分享一下Java项目如何防止SQL注入的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、什么是SQL注入SQL...
    99+
    2023-07-06
  • 防止web项目中的SQL注入方法有哪些
    这篇文章主要介绍“防止web项目中的SQL注入方法有哪些”,在日常操作中,相信很多人在防止web项目中的SQL注入方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”防止web项目中的SQL注入方法有哪些...
    99+
    2023-06-21
  • Java项目防止SQL注入的方式总结
    目录 一、什么是SQL注入? 二、Java项目防止SQL注入方式 1、PreparedStatement防止SQL注入 2、mybatis中#{}防止SQL注入 3、对请求参数的敏感词汇进行过滤 4、nginx反向代理防止SQL注入 ...
    99+
    2023-09-03
    java nginx mybatis
  • Java项目防止SQL注入的几种方法总结
    目录一、什么是SQL注入?二、Java项目防止SQL注入方式1、PreparedStatement防止SQL注入2、mybatis中#{}防止SQL注入3、对请求参数的敏感词汇进行过...
    99+
    2023-05-16
    java防止SQL注入 java防sql注入代码 java sql注入
  • 如何在Java项目中避免sql注入
    这篇文章给大家介绍如何在Java项目中避免sql注入,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、普通用户与系统管理员用户的权限要有严格的区分。如果一个普通用户在使用查询语句中嵌入另一个Drop ...
    99+
    2023-05-31
    java ava 目中
  • springboot如何防sql注入
    springboot防sql注入的方法:通过webFilter防止sql注入,例如:@Component@WebFilter(urlPatterns = ")|" +"(\\b(select|update|and|or|delete|ins...
    99+
    2022-10-20
  • thinkphp如何防SQL注入
    thinkphp防SQL注入的方法:系统底层对于数据安全方面本身进行了相应的防范机制,例如:$User = M("User"); // 实例化User对象$User->find($_GET["id"]);查询条件进行预处理,wher ...
    99+
    2022-10-15
  • discuz如何防sql注入
    discuz防sql注入的方法:在对应的文件中添加以下代码对特殊字符进行过滤,例如: function inject_check($sql_str) { return eregi('select|insert|and|or|update|d...
    99+
    2022-10-15
  • mybatis如何防sql注入
    mybatis防sql注入的方法:在框架底层,JDBC中的PreparedStatement类添加以下代码,例如://安全的,预编译了的Connection conn = getConn();//获得连接String sql = "sele...
    99+
    2022-10-17
  • 动态sql如何防止sql注入
    动态sql防止sql注入的示例:在对应的数据库中添加以下sql语句:DECLARE @variable NVARCHAR(100)DECLARE @SQLString NVARCHAR(1024)DECLARE @ParmD...
    99+
    2022-10-24
  • beego如何防止sql注入
    beego框架里的Raw函数使用了占位符,并且beego是经过mysql的数据库驱动封装打包后再传到mysql中的,这个过程中已经实现了防止SQL注入,因此不再存在SQL注入的危险。...
    99+
    2022-10-08
  • ajax如何防止sql注入
    ajax防止sql注入的方法:将以下代码放在公用的js里面即可,如:$.ajaxSetup({contentType: "application/x-www-form-urlencoded;charset=utf-8",beforeSend...
    99+
    2022-10-06
  • hql如何防止sql注入
    hql防止sql注入的方法:在HQL语句中定义命名参数要用”:”开头,例如:Query query=session.createQuery(“from User user where user.name=:customername...
    99+
    2022-10-17
  • like如何防止sql注入
    like防止sql注入的示例:在不同数据库下的用法不同,例如://mysql环境select * from test where school_name like concat('%',${name},'%')...
    99+
    2022-10-24
  • nodejs如何防止sql注入
    nodejs防止sql注入的方法:使用escape()对传入参数进行编码,例如:var userId = 1, name = 'test';var query = connection.query('SELECT * FROM us...
    99+
    2022-10-04
  • html如何防止sql注入
    html防止sql注入的方法:批量过滤post、get敏感数据,例如:$_GET = stripslashes_array($_GET);$_POST = stripslashes_array($_POST);使用数据过滤函数,例如:fun...
    99+
    2022-10-24
  • spring如何防止sql注入
    spring防止sql注入的方法:可以通过编写一个webFilter过滤器来防止sql注入,例如:@Component@WebFilter(urlPatterns = ")|" +"(\\b(select|update|and|or|del...
    99+
    2022-10-07
  • nginx如何防止sql注入
    nginx防止sql注入的方法:对于提交后台的所有数据都进行过滤转义。数据库中的用户密码需加密存放。php程序进行二次过滤,过滤GET和POST变量中的关键字。生产环境关闭PHP和MySQL的错误信息。一般问号后面的请求参数,在nginx用...
    99+
    2022-10-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作