Web十大安全隐患之SQL注入

简介:
 注入往往是应用程序缺少对输入进行安全性检查所引起的,攻击者把一些包含指令的数据发送给解释器,解释器会把收到的数据转换成指令执行。常见的注入包括 SQL注入,OS Shell,LDAP,Xpath,Hibernate等等,而其中SQL注入尤为常见。这种攻击所造成的后果往往很大,一般整个 数据库的信息都能被读取或篡改,通过SQL注入,攻击者甚至能够获得更多的包括管理员的权限。
  先来说说sql注入漏洞是怎么产生的,或者说对于一个程序开发人员应该怎么防范SQL注入的吧。
  SQL注入往往是在编写包含用户输入的动态数据库查询时产生的,但其实防范SQL注入的方法非常简单。程序员只不再写动态查询,或防止用户输入包含能够破坏查询逻辑的恶意SQL语句,就能够防范SQL注入。当然,我作为一个 测试人员说起来很容易,做起来就难了。
   我本人只会java,所以后边我就用Java代码作为示例:
<font face="宋体" color="#000000">String query ="SELECT account_balance FROM  user_data WHERE user_name ="
+ request.getParameter("customerName");
try {
Statement statement =
connection.createStatement( …);
ResultSet results =
Statement.executeQuery(query);
}</font>
  在以上代码中,我们可以看到并未对变量customerName做验证,customerName的值可以直接附在query语句的后面传送到数据库执行,那么攻击者可以将任意的sql语句注入。
  上边说到怎么产生的,我们接着说怎么样才能让sql注入的漏洞避免。本来计划把这一段放在如何测试之后再介绍,但是貌似先介绍出来更方便理解。
  防范方法一 :参数化查询
  参数化查询是所有开发人员在做数据库查询时首先需要 学习的,参数化查询迫使所有开发者首先要定义好所有的SQL代码,然后再将每个参数逐个传入,这种编码风格就能够让数据库辨明代码和数据。
  参数化查询能够确保攻击者无法改变查询的内容,在下面修正过的例子中,如果攻击者输入了UsrID是“’or ‘1 ‘=’1”,参数化查询会去查找一个完全满足名字为‘or ‘1 ‘=’ 1的用户。
  对于不同编程语言,有一些不同的建议:
  Java——使用带绑定变量的PreparedStatement();
  其他的:。。。不好意思,真不会
  示例:
<font face="宋体" color="#000000">String custname = request.getParameter("customerName");
String query ="SELECT account_balance FROM user_data WHERE user_name= ?";
PreparedStatement pstmt = connection.prepareStatement(query);
Pstmt.setString1,custname();
ResultSet results = pstmt.executeQuery();</font>
   防范方法二:存储过程
  存储过程和参数化查询的作用是一样的,唯一的不同在于存储过程是预先定义并存放在数据库中,从而被应用程序调用的。
  Java存储过程示例:
String custname = request.getParameter("customerName");
try {
CallableStatement cs = connection.prepareCall("call sp_getAccountBalance(?)}");
cs.setString(1,custname);
Result results = cs.executeQuery();
}catch(SQLException se){
//error handling
}

最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
5月前
|
Web App开发 监控 安全
OSS客户端签名直传实践:Web端安全上传TB级文件方案(含STS临时授权)
本文深入解析了客户端直传技术,涵盖架构设计、安全机制、性能优化等方面。通过STS临时凭证与分片上传实现高效安全的文件传输,显著降低服务端负载与上传耗时,提升系统稳定性与用户体验。
574 2
|
1月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.10 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.10 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
237 3
|
2月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.9 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
361 0
Burp Suite Professional 2025.9 发布 - Web 应用安全、测试和扫描
|
4月前
|
安全 Linux iOS开发
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
494 0
Burp Suite Professional 2025.7 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
4月前
|
存储 安全 JavaScript
Web Storage有哪些安全风险?
Web Storage有哪些安全风险?
|
7月前
|
安全 Linux API
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
Burp Suite Professional 2025.4 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
389 6
Burp Suite Professional 2025.4 发布 - Web 应用安全、测试和扫描
|
9月前
|
人工智能 Linux iOS开发
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
447 12
Burp Suite Professional 2025.2 (macOS, Linux, Windows) - Web 应用安全、测试和扫描
|
8月前
|
安全 大数据 数据挖掘
课时9:阿里云Web应用防火墙:全面保障网站的安全与可用性
阿里云Web应用防火墙(WAF)基于阿里巴巴十年攻防经验,提供全面的网站安全防护。它通过Web应用防护、CC攻击防护和业务风控,有效应对各类网络威胁,确保网站的安全与可用性。智能双引擎技术降低误报率,实时数据分析和虚拟补丁更新保障系统安全。WAF已成功护航多个重大活动,为企业提供高效、简便的安全解决方案。
237 0
|
11月前
|
缓存 安全 搜索推荐
阿里云先知安全沙龙(北京站) ——浅谈Web快速打点
信息收集是网络安全中的重要环节,常用工具如Hunter、Fofa和扫描工具可帮助全面了解目标系统的网络结构与潜在漏洞。遇到默认Nginx或Tomcat 404页面时,可通过扫路径、域名模糊测试、搜索引擎缓存等手段获取更多信息。AllIN工具(GitHub: P1-Team/AllIN)能高效扫描网站路径,发现敏感信息。漏洞利用则需充分准备,以应对突发情况,确保快速拿下目标站点。 简介:信息收集与漏洞利用是网络安全的两大关键步骤。通过多种工具和技术手段,安全人员可以全面了解目标系统,发现潜在漏洞,并制定有效的防御和攻击策略。
|
11月前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。

热门文章

最新文章