标签:
简单的说一下我对Web安全的了解,主要是代码注入方面。
SQL攻击(SQL injection),简称为注入攻击,是发生于应用程序数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了检查,那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。
简单的说,所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。例如:如果用户在用户名文本框中输入 ’ or ‘1’ = ‘1’ or ‘1’ = ‘1,则验证的SQL语句变成: select * from student where username=” or ‘1’ = ‘1’ or ‘1’ = ‘1’ and password=”;SQL语句的where条件永远是成立的,所以验证永远是有效的。
在应用程序中若有下列状况,就有可能应用程序正暴露在SQL Injection的高风险情况下:
- 在应用程序中使用字符串联结方式组合SQL指令。
- 在应用程序链接数据库时使用权限过大的账户(例如很多开发人员都喜欢用最高权限的系统管理员账户(如常见的root,sa等)连接数据库)。
- 在数据库中开放了不必要但权力过大的功能(例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等)
- 太过于信任用户所输入的数据,未限制输入的字符数,以及未对用户输入的数据做潜在指令的检查。
数据表中的数据外泄,例如个人机密数据,账户数据,密码等。
数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。
数据库服务器被攻击,系统管理员账户被窜改(例如ALTER LOGIN sa WITH PASSWORD=’xxxxxx’)。
标签:
原文地址:http://blog.csdn.net/claireke/article/details/51223000