什么是SQL注入(SQLi) |
您所在的位置:网站首页 › 注入sql什么意思啊 › 什么是SQL注入(SQLi) |
什么是SQL注入?
SQL注入(SQLi)通常被认为是一种注入攻击,其中攻击者可以执行恶意SQL语句。它控制Web应用程序的数据库服务器。由于SQL注入无助可能会影响使用基于SQL的数据库的任何站点或Web应用程序。弱点是最成熟,最普遍和最危险的Web应用程序漏洞之一。 通过使用SQL注入无助,在给定正确条件的情况下,攻击者可以使用它来回避Web应用程序的验证和批准组件并恢复整个数据库的实质内容。SQL注入同样可以用于包含,更改和删除数据库中的记录,从而影响信息正直性。 在这种程度上,SQL注入可以为攻击者提供未经批准的访问精细信息的权限,包括客户信息,可识别数据(PII),交换谜团,受保护创新和其他敏感数据。 SQL注入功能记住针对数据库服务器运行恶意SQL查询的最终目标,攻击者应该首先在Web应用程序中发现包含在SQL问题中的贡献。 一起发生SQL注入攻击,无助站点需要直接在SQL解释中包含客户端贡献。然后,攻击者可以嵌入有效负载,该有效负载将作为SQL查询的一个组件并入,并继续针对数据库服务器运行。 随附的服务器端伪代码用于验证Web应用程序的客户端。 #定义POST因子 ü Ñ 一米ë = - [R Ë q Ü Ë 小号吨。P O S T [ ' u s e r n a m e ' ] p 一个小号小号瓦特d = - [R Ë q Ü Ë 小号吨。P O S T [ ' p a s s w o r d ' ]#SQL问题对SQLi无能为力 sql = “SELECT id FROM clients WHERE username ='” + uname + “'AND password ='” + passwd + “'”#执行SQL说明 数据库.execute(sql)以上内容是使用用户名确认客户端的基本情况。此外,对于具有名为clients的表的数据库以及用户名和关键字部分的秘密词。 SQL注入有效负载的基本情况可能就像将关键字字段设置为密钥'OR 1 = 1一样简单。 这将导致伴随的SQL问题继续针对数据库服务器运行。 SELECT id FROM clients WHERE username ='username'AND password ='password'OR 1 = 1' 攻击者同样可以注释掉SQL解释的剩余部分,以进一步控制SQL查询的执行。- MySQL,MSSQL,Oracle,PostgreSQL,SQLite '或' 1 '=' 1 ' - '或' 1 '=' 1 '/ *- MySQL '或' 1 '=' 1 '#- 访问(使用无效字符) '或' 1 '=' 1 '%00 '或' 1 '=' 1 '%16一旦问题执行,结果i-访问(使用无效字符)将返回到要处理的应用程序,从而产生确认回避。如果可以设想验证回避,应用程序将无疑地将攻击者从问题结果中记录到主记录中 - 数据库中的主记录是监管客户端的大部分。 攻击者最糟糕的是SQL可以做什么?SQL是一种编程方言,用于监视放在RDBMS中的信息,以这种方式,SQL可用于获取,更改和删除信息。此外,在特定情况下,RDBMS同样可以从SQL公告中对工作框架进行收费。 记住上面的内容,在考虑附带的情况下,看看有效的SQL注入攻击对攻击者来说有多赚钱的要求不高。 攻击者可以使用SQL注入来回避确认甚至模仿特定客户端。 One of SQL’s essential capacities is to choose information in light of an inquiry and yield the consequence of that question. A SQL Injection weakness could permit the entire exposure of information dwelling on a database server. Since web applications use SQL to modify information inside a database, an attacker could use SQL Injection to adjust information put away in a database. Modifying information influences information honesty and could cause denial issues. For example, issues, for example, voiding exchanges, adjusting balances and different records. SQL用于擦除数据库中的记录。攻击者可以使用SQL注入漏洞来清除数据库中的信息。无论我们是否使用合适的强化方法,信息的擦除都可能影响应用程序的可访问性,直到重新建立数据库为止。 一些数据库服务器设计(有目的或其他)允许在数据库服务器上自由执行工作框架订单。在正确的条件下,攻击者可以使用SQL注入作为攻击防火墙后面的内向系统的基础向量。 SQL注入攻击的剖析SQL注入只需要存在两个条件 - 一个利用SQL的社交数据库,以及一个可以直接用作SQL问题一部分的客户端可控信息。 在下面的情况下,它将接受攻击者可能通过滥用Web应用程序中的SQL注入无防御性展示来从数据库中泄漏信息。 提供具有不恰当贡献的SQL清晰度,例如在SQL查询期望数字时给出字符串,或者在SQL语句中故意嵌入标点符号错误会使数据库服务器抛出错误。 在进步中,失误对工程师非常有帮助,但如果在现场网站上授权,他们可以向攻击者发现大量数据。SQL错误具有图形趋势,即攻击者可以获取有关数据库结构的数据。有时甚至只是通过将数据与错误消息分开来指定整个数据库 - 这个系统基于SQL注入被称为错误。在这种程度上,数据库失误应该在现场网站上失效,或者登录到访问受限的记录。 SQL注入示例一个。在ASP.NET中选择语句 湾 在ASP.NET中插入声明 C。在PHP SQL中插入声明 $ stmt = $ dbh - > prepare(“INSERT INTO Customers(客户名称,地址,城市) VALUES(:nam,:add,:cit)“); $ stmt - > bindParam(':nam',$ txtNam); $ stmt - > bindParam(':add',$ txtAdd); $ stmt - > bindParam(':cit',$ txtCit); $ stmt - > execute(); 结论在这个SQL注入教程中,我们了解了SQL中的注入。此外,我们讨论了它的例子,代码,工作和解剖。除此之外,我们还看到了SQL PHP和SQL攻击者可以做的事情。不过,如果有任何疑问或疑问,请在评论部分询问。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |