毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机会接触相关开发……必须的各种借口。这几天把sql注入的相关知识整理了下,希望大家多多提意见。
(对于sql注入的攻防,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避免后知后觉的犯下大错,专门查看大量前辈们的心得,这方面的资料颇多,将其精简出自己觉得重要的,就成了该文)
下面的程序方案是采用 ASP.NET + MSSQL,其他技术在设置上会有少许不同。
示例程序下载:SQL注入攻防入门详解_示例
什么是SQL注入(SQL Injection)
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。
尝尝SQL注入
1. 一个简单的登录页面
关键代码:(详细见下载的示例代码)
方法中userName和 password 是没有经过任何处理,直接拿前端传入的数据,这样拼接的SQL会存在注入漏洞。(帐户:admin 123456)
1) 输入正常数据,效果如图:
合并的SQL为:
SELECT COUNT(*) FROM Login WHERE UserName='admin' AND Password='123456'
2) 输入注入数据:
如图,即用户名为:用户名:admin’—,密码可随便输入