51Testing软件测试论坛
标题:
安全性测试,公司一般会用到哪些测试方法,除了sql注入和xss
[打印本页]
作者:
wj870208
时间:
2012-9-22 00:00
标题:
安全性测试,公司一般会用到哪些测试方法,除了sql注入和xss
或者面试时必须会得测试方法和工具<script>alert("hello")</script>
作者:
挑战无处不在
时间:
2012-9-30 10:21
SQL注入攻击维基百科,自由的百科全书跳转到: 导航、 搜索 跳过字词转换说明
汉漢▼▲为了阅读方便,本文使用标题手工转换。转换标题为:大陆:SQL注入攻击;台灣:SQL資料隱碼攻擊;实际标题为:SQL資料隱碼攻擊;当前显示为:SQL注入攻击为了阅读方便,本文使用全文手工转换。转换内容:下面采用电脑和信息技术组全文转换 [编辑]
以下为本条目单独的全文转换,请从本页面进行编辑:
大陆:注入;台灣:資料隱碼; 当前用字模式下显示为→注入夾帶⇒大陆:注入;夾帶⇒新加坡:注入; 当前用字模式下显示为→注入 [展开] 字词转换说明字词转换是中文维基的一项自动转换,目的是通过计算机程序自动消除繁简、地区词等不同用字模式的差异,以达到阅读方便。字词转换包括全局转换和手动转换,本说明所使用的标题转换和全文转换技术,都属于手动转换。
如果您想对我们的字词转换系统提出一些改进建议,或者提交应用面更广的转换(中文维基百科全站乃至MediaWiki软件),或者报告转换系统的错误,请前往Wikipedia:字词转换请求或候选发表您的意见。
SQL攻击(SQL injection,中国大陆称作SQL注入攻击,台湾称作SQL资料隐码攻击),简称注入攻击,是发生于应用程序之数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏。
有部份人认为SQL注入攻击是只针对Microsoft SQL Server而来,但只要是支持批量处理SQL指令的数据库服务器,都有可能受到此种手法的攻击。
目录 [隐藏]
1 原因
2 作用原理
3 例子
4 可能造成的伤害
5 避免的方法
6 外部链接
[编辑] 原因在应用程序中若有下列状况,则可能应用程序正暴露在SQL Injection的高风险情况下:
1.在应用程序中使用字符串联结方式组合SQL指令。
2.在应用程序连结数据库时使用权限过大的帐户(例如很多开发人员都喜欢用sa(自带的最高权限的系统管理员帐户)连接Microsoft SQL Server数据库)。
3.在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
4.太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
[编辑] 作用原理1.SQL命令可查询、插入、更新、删除等,命令的串接。而以分号字符为不同命令的区别。(原本的作用是用于SubQuery或作为查询、插入、更新、删除……等的条件式)
2.SQL命令对于传入的字符串参数是用单引号字符所包起来。《但连续2个单引号字符,在SQL数据库中,则视为字符串中的一个单引号字符》
3.SQL命令中,可以注入注解《连续2个减号字符——后的文字为注解,或“/*”与“*/”所包起来的文字为注解》
4.因此,如果在组合SQL的命令字符串时,未针对单引号字符作取代处理的话,将导致该字符变量在填入命令字符串时,被恶意窜改原本的SQL语法的作用。
[编辑] 例子某个站点的登录验证的SQL查询代码为
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
恶意填入
userName = "' OR '1'='1";
与
passWord = "' OR '1'='1";
时,将导致原本的SQL字符串被填为
strSQL = "SELECT * FROM users WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
也就是实际上运行的SQL命令会变成下面这样的
strSQL = "SELECT * FROM users;"
因此达到无帐号密码,亦可登录站点。所以SQL注入攻击被俗称为黑客的填空游戏。
[编辑] 可能造成的伤害1.数据表中的数据外泄,例如个人机密数据,帐户数据,密码等。
2.数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。
3.数据库服务器被攻击,系统管理员帐户被窜改(例如ALTER LOGIN sa WITH PASSWORD='xxxxxx')。
4.取得系统较高权限后,有可能得以在网页加入恶意连结以及XSS。
5.经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell "net stop iisadmin"可停止服务器的IIS服务)。
6.破坏硬盘数据,瘫痪全系统(例如xp_cmdshell "FORMAT C:")。
[编辑] 避免的方法1.在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。
2.在组合SQL字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续2个单引号字符)。
3.如果使用PHP开发网页程序的话,亦可打开PHP的魔术引号(Magic quote)功能(自动将所有的网页传入参数,将单引号字符取代为连续2个单引号字符)。
4.其他,使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL。
5.使用SQL防注入系统。
[编辑] 外部链接(正体中文)赛迪网-存储过程之外:SQL注入深入防御
(正体中文)MSDN 的SQL注入攻击概述
(简体中文)MSDN 的 SQL 注入概述
(英文)Protecting yourself from SQL Injection Attacks by Ross Overstreet
(英文)"SQLrand: Preventing SQL Injection Attacks" by Stephen W. Boyd and Angelos D. Keromytis
(英文)"What is SQL Injection?" By CGISecurity.com
(英文)"What is Blind SQL Injection?" By CGISecurity.com
(英文)Avoid SQL injection
(英文)PHP and SQL Injections
(英文)SQL Injection in Login Forms
(正体中文)LINQ - 对付 SQL Injection 的 "免费补洞策略"
作者:
wj870208
时间:
2012-10-8 20:37
谢谢了,东西很受用
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2