SQL注入是一种首要在Web应用程序上执行的攻击,在SQL注入中,攻击者通过Web表单等输入接口注入部门恶意SQL。这些注入的语句发送到Web应用程序后面的数据库办事器,可能会执行不需要的操作,比方提供对未经授权的人的会见或删除或读取敏感信息等。SQL注入漏洞可能会影响由支撑SQL的数据库(如Oracle,MySQL等)提供支撑的任何应用程序。SQL注入攻击是最普遍使用,以及最古老和很是伤害的应用程序漏洞之一。OWASP组织(OpenWebApplicationSecurityProject)在其OWASPTop10文档中列出了SQLInjections 作为Web应用程序平安性的最大威胁。SQL注入示例用HTML创建一个表单:
SQLinjectioninwebapplications
当我们点击提交时,上面的表单提交到PHP剧本下面:SQL注入的工作道理在上面的示例中,假设用户填写表单如下:Username:‘or‘1’=’1Password:‘or‘1’=’1此刻我们的$查询成为:SELECT*FROMUsersWHEREusername=”or‘1’=’1′ANDpassword=”or‘1’=’1′;此查询始终返回一些行,并导致在欣赏器上打印登录。因此,攻击者不知道在数据库中注册的任何用户名或暗码,但攻击者仍旧可以登录。若何修复或防止SQL注入?最好的解决方案是使用预筹办语句和参数化查询,当我们使用预筹办语句和参数化查询时,SQL语句由数据库引擎单独剖析。使用PDO我们可以将form-handler.php更改为使用PDO:prepare(‘SELECT*FROMUsersWHEREusername=:usernameANDpassword=:password’);$stmt->bindParam(‘:username’,$username);$stmt->bindParam(‘:password’,$password);$stmt->execute();if(count($stmt)==0){echo‘NotLoggedIn’;}else{echo‘LoggedIn’;}$stmt->close();$pdo->close();?>使用MySQLi(仅合用于MySQL)我们也可以在form-handler.php中使用MySQLi来修复SQL注入问题:prepare(‘SELECT*FROMUsersWHEREusername=?ANDpassword=?’);$stmt->bind_param($username,$password);$stmt->execute();if(count($stmt)==0){echo‘NotLoggedIn’;}else{echo‘LoggedIn’;}$stmt->close();$conn->close();?>结论在本文中,我们相识了SQL注入是什么以及若何制止可能导致SQL注入攻击的Web应用程序中的漏洞,如果无法辨认是否被执行SQL注入,可以使用web漏洞扫描工具举行扫描辨认。相关文章推荐什么是root? root可以指以下任何一项:1.root-管理员1.root可替代地被称为治理员,root是一个超等用户的[…]...Null是什么? 在数据库中,Null是某个字段中完全没有值,而且表现字段值未知。Null与数字字段,文本字段或空间值的零值[…]...Cron是什么?操纵CronJob主动执行准时使命 Cron是一个实用程序,用于在特定的时间主动执行重复使命。在Linux中,常用cron办事器来完成这项工作[…]...根办事器是什么? 在将域名转换为IP地址时,根域名办事器(也称为DNS根办事器或简称根办事器)负责基本功能:它相应域名体系根区域[…]...SSH是什么? SSH全称“SecureShell”,中文译作平安外壳协议。SSH是一种与另一台计较机举行平安通讯的方法,意[…]...SQL注入是什么,若何防止SQL注入?
我要评论