×

sql注入怎么解决(sql注入危害不包括)

前端技术网 前端技术网 发表于2023-12-12 21:34:11 浏览2138 评论0

抢沙发发表评论

一、sql注入的攻击原理是什么

SQL注入式攻击的主要形式有两种。

1、直接注入式攻击法

sql注入怎么解决(sql注入危害不包括)

直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。

2、间接攻击方法

它将恶意代码注入要在表中存储或者作为原数据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不背编译与执行。

二、杀毒软件可以处理sql注入么

不能,该软件只对系统的文件进行检查

三、SQL注入的直接手段是什么

1、UNIONquerySQLinjection(可联合查询注入)

2、Error-basedSQLinjection(报错型注入)

sql注入怎么解决(sql注入危害不包括)

数据库报错注入版本限制

extractvalue()

updatexml()

floor()

exp()

GeometryCollection()

linestring()

polygon()

multipoint()

multipolygon()

multilinestring()

3、Boolean-basedblindSQLinjection(布尔型注入)

1、判断长度

2、猜测内容

4、Time-basedblindSQLinjection(基于时间延迟注入)

Sleep()

Benchmark(ket,)

笛卡尔积Writeup

GET_LOCKWriteup

RLIKE

5、StackedqueriesSQLinjection(可多语句查询注入/堆叠注入)

6、其它注入

1、http头部注入

1、User-Agent头字段注入

2、Referer头字段注入

3、Cookie头字段注入

4、二次注入

四、java如何防止sql注入

java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构,大部分的SQL注入已经挡住了,在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数

01importjava.io.IOException;

02importjava.util.Iterator;

03importjavax.servlet.Filter;

04importjavax.servlet.FilterChain;

05importjavax.servlet.FilterConfig;

06importjavax.servlet.ServletException;

07importjavax.servlet.ServletRequest;

08importjavax.servlet.ServletResponse;

09importjavax.servlet.http.HttpServletRequest;

10importjavax.servlet.http.HttpServletResponse;

11/**

12*通过Filter过滤器来防SQL注入攻击

13*

14*/

15publicclassSQLFilterimplementsFilter{

16privateStringinj_str="'|and|exec|insert|select|delete|update|count|*|%

|chr|mid|master|truncate|char|declare|;|or|-|+|,";

17protectedFilterConfigfilterConfig=null;

18/**

19*Shouldacharacterencodingspecifiedbytheclientbeignored?

20*/

21protectedbooleanignore=true;

22publicvoidinit(FilterConfigconfig)throwsServletException{

23this.filterConfig=config;

24this.inj_str=filterConfig.getInitParameter("keywords");

25}

26publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,

27FilterChainchain)throwsIOException,ServletException{

28HttpServletRequestreq=(HttpServletRequest)request;

29HttpServletResponseres=(HttpServletResponse)response;

30Iteratorvalues=req.getParameterMap().values().iterator();//获取所有的表单参数

31while(values.hasNext()){

32String[]value=(String[])values.next();

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

34if(sql_inj(value[i])){

35//TODO这里发现sql注入代码的业务逻辑代码

36return;

37}

38}

39}

40chain.doFilter(request,response);

41}

42publicbooleansql_inj(Stringstr)

43{

44String[]inj_stra=inj_str.split("\\|");

45for(inti=0;i<inj_stra.length;i++)

46{

47if(str.indexOf(""+inj_stra[i]+"")>=0)

48{

学习资源

百度搜索圈T社区(www.aiquanti.com)免费视频教程

文章分享结束,sql注入怎么解决和sql注入危害不包括的答案你都知道了吗?欢迎再次光临本站哦!