BlackManba

该blog用于记录一些学习总结和心得,请大佬们多指正。

  • 主页
  • 随笔
所有文章 友链 关于我

BlackManba

该blog用于记录一些学习总结和心得,请大佬们多指正。

  • 主页
  • 随笔

sql注入的预防

2018-03-10

所谓sql注入,就是通过把sql命令插入到web表单递交或输入域名或页面请求的查询字符串,最终达到

欺骗服务器执行恶意的sql命令,比如先前的很多影视网站泄露vip会员密码大多就是通过web表单递交
字符爆出的,这类表单特别容易受到sql注入式攻击,当应用程序输入内容来构造动态sql语句以访问数据
库时,会发生sql注入攻击。

预防sql注入方法

1.预编译语句集

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

使用好处:
(1)代码的可读性和可维护性
(2)PreparedStatement尽最大可能提高性能
(3)最重要的一点是极大地提高了安全性
代码示例:

1
2
3
4
5
<span style="font-size:14px;">String sql="select * from users where username=? and password=?";
PreparedStatement preState=conn.prepareStatement(sql);
preState.setString(1,username);
preState.setString(2,password);
ResultSet rs=preState.executeQuery();</span>

上述的原理是:sql注入只对sql语句的准备(编译)过程有破坏,而PreparedStatement已经准备好了,执行阶段
只是把输入串当作数据处理,而不对sql语句进行解析,从而也就避免了sql注入。

2.使用正则表达式来过滤传入的参数

可以使用replace方法来实现正则对于输入参数的过滤:

1
str.replace(".*([';]+|(--)+).*"," ")

可以通过上面的代码来将传入的符合上述正则表达式的参数替换成空格,从而达到过滤。

字符串过滤

通用的方法:在||之间的参数可以根据自己程序的需要添加

1
2
3
4
5
6
7
8
9
10
11
public static boolean sql_inj(String str)
{
String injstr="select|'|exec|insert|and|delete|update|count|*|%|chr|mid|master|truncate|or|,";
String injstra=split(injstr,"|");
for(int i=0;i<injstra.length;i++)
{
if(str.indexof(injstra[i])>=0)
return true;
}
return false;
}

上述代码的思路是定义一串字符串,字符串包含了要过滤的信息以|为分隔符,判断输入的字符串是否包含了这个信息
若有就会返回一个大于等于0的索引号。就能将其做过滤操作。

赏

谢谢你请我吃糖果

扫一扫,分享到微信

微信分享二维码
web学习
渗透测试流程
© 2019 BlackManba
Hexo Theme Yilia by Litten
  • 所有文章
  • 友链
  • 关于我

tag:

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 潘大佬
  • 铁棚大佬
  • 葛大佬
  • 司令大佬
  • github
座右铭:潜心学习低调发展

爱好:学习

邮箱:yangtao6693@foxmail.com

简介:本人是一个刚进入安全圈的萌新,喜欢研究web方面的安全,其他一些二进制逆向也在慢慢学习。该blog用于记录一些学习总结和心得也会分享一些生活趣事,请大佬们多指正。