专业网站设计的网站,个人主页静态网站,wap网站管理系统,已矣seo排名点击软件From#xff1a;https://www.daguanren.cc/post/sql-injection.html SQL注入的定义与诱因
定义
SQL攻击#xff08;英语#xff1a;SQL injection#xff09;#xff0c;简称注入攻击#xff0c;是发生于应用程序之数据库层的安全漏洞。简而言之#xff0c;是在输入的…
Fromhttps://www.daguanren.cc/post/sql-injection.html SQL注入的定义与诱因
定义
SQL攻击英语SQL injection简称注入攻击是发生于应用程序之数据库层的安全漏洞。简而言之是在输入的字符串之中注入SQL指令在设计不良的程序当中忽略了检查那么这些注入进去的指令就会被数据库服务器误认为是正常的SQL指令而运行因此遭到破坏或是入侵。
只要是支持批处理SQL指令的数据库服务器都有可能受到此种手法的攻击。
诱因
在应用程序中若有下列状况则可能应用程序正暴露在SQL Injection的高风险情况下
在应用程序中使用字符串联结方式组合SQL指令。在应用程序链接数据库时使用权限过大的账户例如很多开发人员都喜欢用最高权限的系统管理员账户如常见的rootsa等连接数据库。在数据库中开放了不必要但权力过大的功能例如在Microsoft SQL Server数据库中的xp_cmdshell延伸预存程序或是OLE Automation预存程序等太过于信任用户所输入的数据未限制输入的字符数以及未对用户输入的数据做潜在指令的检查。
下面的GIF展示的是SQL注入的示意 代码解释
假设某个网站的登录验证的SQL查询代码为
SELECT * FROM user WHERE (username username) and (password password);如果恶意将username和password传入的值设置为
username 1 OR 11;
password 1 OR 11;即为
SELECT * FROM user WHERE (username 1 OR 11) and (password 1 OR 11);由于OR 11 总是为真true原SQL语句等同于
SELECT * FROM user;SQL注入的危害与防护
危害
数据表中的数据外泄例如个人机密数据账户数据密码等。数据结构被黑客探知得以做进一步攻击例如SELECT * FROM sys.tables。数据库服务器被攻击系统管理员账户被窜改例如ALTER LOGIN sa WITH PASSWORDxxxxxx。获取系统较高权限后有可能得以在网页加入恶意链接、恶意代码以及XSS等。经由数据库服务器提供的操作系统支持让黑客得以修改或控制操作系统例如xp_cmdshell net stop iisadmin可停止服务器的IIS服务。破坏硬盘数据瘫痪全系统例如xp_cmdshell FORMAT C:。
防护
在设计应用程序时完全使用参数化查询Parameterized Query来设计数据访问功能。在组合SQL字符串时先针对所传入的参数作字符取代将单引号字符取代为连续2个单引号字符。使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件。使用SQL防注入框架开发。
参考资料
维基百科SQL注入w3schools的SQL_Injection
本文链接https://www.daguanren.cc/post/sql-injection.html