sql注入理解及防范

百度百科概念:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。 比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

举例说明:

创建一个用户表users

正确登录的例子:

填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。

select * from users where username=‘marcofly’ and password=md5(‘test’)

很明显,用户名和密码在表里有,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。

sql注入示例:

比如:在用户名输入框中输入’ or 1=1# 密码随便输入,这时候的合成后的SQL查询语句为:
select * from users where username=’’ or 1=1#’ and password=md5(‘123456’)

语义分析:“ # ”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容&#

你可能感兴趣的:(数据库)