网站优化

首页 > 新闻资讯 > 网站优化 > 程序员的SQL注入问题总结

程序员的SQL注入问题总结

2019-09-12 热度:238 ℃
一、SQL注入介绍
 
SQL注入就是将原本的SQL语句的逻辑结构改变,使得SQL语句的执行结果和原本开发者的意图不一样;
方法:在表单中将命令当作用户输入提交给程序;
 
二、SQL注入范例
 
这里我们根据用户登录页面
 
<form action="" >
用户名:<input type="text" name="username"><br/>
密  码:<input type="password" name="password"><br/>
 </form>
 
预先创建一个表:
 
create table user_table(
    id      int Primary key,
    username    varchar(30),
    password    varchar(30)
);
 
insert into user_table values(1,'xiazdong-1','12345');
insert into user_table values(2,'xiazdong-2','12345');
一般查询数据库的代码如下:
 
public class Demo01 {
    public static void main(String[] args) throws Exception {
        String username = "xiazdong";
        String password = "12345";  
        String sql = "SELECT id FROM user_table WHERE " + "username='" + username
                + "'AND " + "password='" + password + "'";
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql:// www.it165.net :3306/db1","root","12345");
        PreparedStatement stat = con.prepareStatement(sql);
        System.out.println(stat.toString());
        ResultSet rs = stat.executeQuery();
        while(rs.next()){
            System.out.println(rs.getString(1));
        }
    }
}
但是这里username=xiazdong,password=12345,
因此此处的SQL语句为:
 
SELECT id FROM user_table WHERE username='xiazdong' AND password='12345';
如果我们把username和password的值变为:
username='  OR 1=1 --
password=x
会变成一个很可怕的情况:将把数据库中所有用户都列出来,为什么呢?
因为SQL语句现在为:
 
SELECT id FROM user_table WHERE username='' OR 1=1 -- ' AND password='12345';
因为--表示SQL注释,因此后面语句忽略;
因为1=1恒成立,因此username='' OR 1=1  恒成立,因此SQL语句等同于:
 
SELECT id FROM user_table;
很奇妙吧....
 
三、解决方法
 
其实解决方法很简单,就是使用PreparedStatement即可;
 
最后引入一张SQL注入的图片:

程序员的SQL注入问题总结  第1张

相关文章

基于JavaScript的DDOS攻击

基于JavaScript的DDOS攻击

CloudFlare通过对上百万个网站进行防护,总结出最古老、最普遍的攻击非DDoS攻击莫属。在传统的DDoS攻击中,攻击者会控制大量的傀儡机,然后向目标服务器发送大量请求,阻止合法...

BCTF之窃密木马解题思路

BCTF之窃密木马解题思路

引用至BCTF的题目 http://bctf.cn/problems/16 这题感觉更像是漏洞挖掘然后EXP,觉得题目挺有意思的,拿来和大家分享,比赛平台再次开放大家可以去玩玩...

XSS报警机制

XSS报警机制

0x00 前言 在第一章结尾的时候我就已经说了,这一章将会更详细的介绍前端防火墙的报警机制及代码。在一章出来后,有人会问为什么不直接防御,而是不防御报警呢。很简单,因为防御的话,攻击者...

爱丽团购任意用户及评论删除漏洞及修复

爱丽团购任意用户及评论删除漏洞及修复

爱丽团购由于为验证用户权限,可删除任意用户地址信息。     测试环境:   攻击者:xfkxfk   受害者:tester &n...

ASP.NET web.config加解密方法

ASP.NET web.config加解密方法

你还能够使用aspnet_regiis.exe命令行工具来加密和解密Web.config文件配置部分,你可以在"%WINDOWSDIR%\Microsoft.Net\Frame...

通过参数方式防止注入漏洞

通过参数方式防止注入漏洞

在判断用户登录时如果用了string.format字符串拼接的方式,用户有可能通过相应的拼接,去注视掉要求验证的代码;这样就有了漏洞;然而在net中通过参数的方式(本质是存储过程对这样的...

名品网导购网迂回任意重置账户密码漏洞及修复

名品网导购网迂回任意重置账户密码漏洞及修复

测试环境,2个账户:   账户A:abbbc 账户B:abbbbc   首先登录账户B,在资料修改处,点击修改绑定邮箱  ...

服务器数据安全保护需要找准要害

服务器数据安全保护需要找准要害

  随着企业信息化办公管理体系的普及,服务器在加快整个企业网络运行速度和扩大存储容量的同时,它的安全运行也是最让人头疼的事儿,而那些仅靠服务器本身设置的基础故障处理技术和销售商...

我们检测到您可能使用 AdBlock 或者其他广告屏蔽插件,导致网页出现错位、变形以及丢失的情况,影响网站内容的阅读。
本站无任何商业广告!为了伍林堂平台的生存,恳请您能够理解,将伍林堂旗下交互产品加入白名单(方法点此),万分感谢!