sql注入防御

1 特殊字符转义

通过jakarta commons lang 通用类包中(spring/lib/jakarta-commons/commons-lang.jar)的 StringEscapeUtils完成转义:

import org.apache.commons.lang.StringEscapeUtils;
public class SqlEscapeExample {
    public static void main(String[] args) {
        String userName = "1‘ or ‘1‘=‘1";
        String password = "123456";
        userName = StringEscapeUtils.escapeSql(userName);
        password = StringEscapeUtils.escapeSql(password);
        String sql = "SELECT COUNT(userId) FROM t_user WHERE userName=‘"
            + userName + "‘ AND password =‘" + password + "‘";
        System.out.println(sql);
    }
}
时间: 2024-08-02 06:51:50

sql注入防御的相关文章

看好你的门-保护数据存储区(1)-SQL注入防御

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1.常用的SQL注入防御的方法 一个能连接数据库的应用. 1.对用户端输入的数据进行严格防范: 2.使用PreparedStatement执行Sql语句: 3.不仅仅要在页面层面进行验证,在服务端层面还要同步进行这些验证: 2.使用正则表达式屏蔽特殊字符 使用SQL注入攻击多在特殊字符上下手脚,如"'","*","/" ,"–&qu

Bypass ngx_lua_waf SQL注入防御(多姿势)

0x00 前言 ? ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(from|limit) (?:(union(.*?)select)) (?:from\W+information_schema\W) 这边主要分享三种另类思路,Bypass ngx_lua_waf SQL注入防御. 0x01 环境搭建 github源码:https://github.com/lov

23. Bypass ngx_lua_waf SQL注入防御(多姿势)

0x00 前言 ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+(from|limit) (?:(union(.*?)select)) (?:from\W+information_schema\W) 这边主要分享三种另类思路,Bypass ngx_lua_waf SQL注入防御. 0x01 环境搭建 github源码:https://github.com/loves

SQL注入防御绕过——二次编码之干掉反斜杠

SQL注入防御绕过--二次编码 01 背景知识 一.为什么要进行URL编码 通常如果一样东西需要编码,说明这样东西并不适合传输.对于URL来说,编码主要是为了避免引发歧义与混乱.例如,URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/?name=abc&pwd=123如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和= 符号进行转义,也就是对其进行编码.对于URL编码的深入研

SQL 注入防御方法总结

SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQL 语句中,导致了SQL 注入漏洞. 1. 演示下经典的SQL注入 我们看到:select id,no from user where id=2; 如果该语句是通过sql字符串拼接得到的,比如: Strin

SQL注入防御绕过

一.宽字节注入1.什么是宽字节GB2312.GBK.GB18030.BIG5等这些都是常说的宽字节,实际为两字节 2.宽字节注入原理防御:将 ' 转换为 \'绕过:将 \ 消灭 mysql在使用GBK编码的时候,会认为两个字符为一个汉字\ 编码为 %5c' 编码为%27%df%5c mysql会认为是一个汉字构造:%df' %df\' %df%5c%27 其中%df%5c将成为一个汉字专为 汉字' 从而绕过了/的转义注:前一个ascii码大于128才能到汉字的范围 注入方法:在注入点后键入%df

WAF的SQL注入绕过手段和防御技术

一.关于SQL注入 SQL注入是一种常见的入侵WEB应用的手法.SQL注入是利用应用系统的编程漏洞和SQL语言的语法特征,改变原始的SQL语句执行逻辑而产生的. 攻击者向Web应用发送精心构造的输入数据,这些输入中的一部分被解释成SQL指令,改变了原来的正常SQL执行逻辑,执行了攻击者发出的SQL命令,最终使攻击者获取Web应用的管理员权限或者下载了Web应用存到数据库中的敏感信息. 二.SQL注入如何实现 为了对本文进行更好的讲解,下面简单地对SQL注入的原理进行示例性说明. 如下图是某网站的

防御SQL注入的方法总结

这篇文章主要讲解了防御SQL注入的方法,介绍了什么是注入,注入的原因是什么,以及如何防御,需要的朋友可以参考下 SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入可以参见:https://en.wikipedia.org/wiki/SQL_injection SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQL 语句中,导致了SQL 注入漏洞. 1. 演示下经典的SQL注入 我们看到:select i

常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御

1.SQL注入原理:1).SQL命令可查询.插入.更新.删除等,命令的串接.而以分号字元为不同命 令的区别.(原本的作用是用于SubQuery或作为查询.插入.更新.删除--等 的条件式)2).SQL命令对于传入的字符串参数是用单引号字元所包起来.(但连续2个单引 号字元,在SQL资料库中,则视为字串中的一个单引号字元)3).SQL命令中,可以注入注解预防:1).在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据 访问功能.2).在组合SQL字符串时,先针对