关于sql防注入和mysql索引优化(一)

今天在被提问的过程中,被问到了sql防注入和mysql索引优化问题,一时间没有太好的答案,感觉平常也对mysql经常使用,但这时候却发现了数据库中的这两个最重要的问题,防注入和搜索的优化。所以,今天特意查找了一些sql防注入和mysql索引优化技术,并自己尝试了一下,一起分享给大家。

首先通过百度百科,我了解了什么是sql注入,其实这个在我之前的工作已经有所涉及,SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

举几个简单的例子首先后台的正常操作如下。

第一种

user=request(“user”)
passwd=request(“passwd”)
sql=’select admin from adminbate where user=’&”’&user&”’&’ and passwd=’&”’&passwd&”’;

然后如果使用’or ‘a’=’a来做用户名密码的话,那么查询就变成了

select admin from adminbate where user=”or ‘a’=’a’ and passwd=”or ‘a’=’a’

这样的话,根据运算规则,这里一共有4个查询语句,那么查询结果就是 假or真and假or真,先算and 再算or,最终结果为真,这样就可以进到后台了。

第二种
是通过命令尝试猜测数据库的表名和库名等通过返回的错误提示进行判断自己猜测的是否正确。
通过上网的查找,发现了防御sql注入的几种常用方法。
方法一:
防止sql注入最主要的就一点就是变量全部参数化,能根本的解决sql注入问题。比如代码里写sql或数据库层面写存储过程,只要不拼接sql语句,不执行动态sql语句,那就能防止sql注入。
方法二:永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和
双”-“进行转换等。
方法三:永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
方法四:不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
方法五:应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。
时间太晚,所以没能完成mysql索引优化的学习,所以明天会继续更新mysql索引优化的学习和分享。

《关于sql防注入和mysql索引优化(一)》上有1条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注