SQL安全问题.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQL安全问题

一、SQL注入简介 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击. 当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。 sql注入可能导致攻击者使用应用程序登陆在数据库中执行命令。如果应用程序使用特权过高的帐户连接到数据库,这种问题会变得很严重。在某些表单中,用户输入的内容直接用来构造(或者影响)动态sql命令,或者作为存储过程的输入参数,这些表单特别容易受到sql注入的攻击。而许多网站程序在编写时,没有对用户输入的合法性进行判断或者程序中本身的变量处理不当,使应用程序存在安全隐患。这样,用户就可以提交一段数据库查询的代码,根据程序返回的结果,获得一些敏感的信息或者控制整个服务器,于是sql注入就发生了。 SQL注入(SQL Injection)攻击具有很大的危害,攻击者可以利用他读取、修改或者删除数据库内的数据,获取数据库中的用户名或密码等敏感信息,甚至可以获得数据库管理员的权限,而且,sql injection为很难防范。网络管理员无法通过安装系统补丁或者进行简单的安全配置进行自我保护,一般的防火墙也无法拦截SQL injection攻击。 在应开发中应该采取对应的措施: PrepareStatement+Bind-variable 对于java、JSP开发的应用,可以使用PrepareStatement+Bind-variable来防止注入,另外从PHP5开始,也在扩展MYSQLI中支持PrepareStatement,所以在使用这类语言做数据开发时,强烈建议使用使用PrepareStatement+Bind-variable来实现,尽量不要使用拼接的SQL。下面是java为例说明下实现方法 string sql=select * from users u where u.id and u.password; preparestatement ps=connection.preparestatement(sql); ps.setint(1,id); ps.setstring(2,pwd); resultset rs=ps.executequery(); 使用应用程序提供的转换函数 很多程序接口都提供对特殊字符的进行转换,恰当地使用这些函数,也可以防止应用程序用户输入使用程序生成不期望的语句。 MySQL CAPI:使用mysql_real_escape_string()API调用。 MySQL++:使用escape和quote修饰符 PHP:使用mysqlreal_escape_string()函数从php5开始,可以使用扩展的mysqli,这是对mysql新特性的一个扩展支持,其中的一个优化点就是preparestatement 自定义函数进行验证 如果现有的转换函数仍然不能够满足要求,则需要对自己编写函数进行输入验证。输入验证是一个很复杂的问题,其他途径: 整理数据使之变得有效; 拒绝已知的非法输入; 只接受已知的合法输入; 所以如果要想获得更好的安全状态,目前最好的解决办法就是对用户提交或者可能改变的数据进行简单的分类,分别应用正则表达式来对用户提供的输入数据进行严格的检测和验证。 已知非法符号: 、;、=、(、)、/*、%、+、、、、--、[、]; 其实只需过虑非法字符组合就可以阻止已知形式的攻击,并且如果发现更新的攻击符合组合,也可以将这些符号组合添加进来,继续防范新的攻击。特别是空格符号和其他产生相同作用的分隔关键字的符号,例如:“/**/”,如果能成功过滤这种符号,那么有很多注入攻击将不能发生,并且相同的过滤他们的十六进制“%XX”。 Page ? * * MYSQL安全管理机制和MYSQL的安全问题 随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,数据库安全就显得十分重要。因此,本文就以上问题讨论了MySQL数据库在网络安全方面的一些功能。 帐户安全 帐户是MySQL最简单的安全措施。每一帐户都由用户名、密码以及位置(一般由服务器名、IP或通配符)组成。如用户john从server1进行登录可

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档