sql 拼接int类型的字段_SQL注入的漏洞及解决方案

7256079289ac7b460dab93b063d46e6e.png

一、sql注入漏洞

  1. SQL注入漏洞

  SQL注入攻击(SQL Injection),简称为注入攻击,SQL注入,被广泛用于非法获取网站控制权。这是在应用程序的数据库层中发生的安全漏洞。在设计程序中,忽略了对输入字符串中包含的SQL命令的检查,并且将数据库误认为是要运行的常规SQL命令,这导致数据库受到攻击,从而可能导致盗窃,修改和删除数据,并进一步导致网站嵌入恶意代码,植入后门程序的危害等。

03f30ebee6cdf7a9119fc8b6b7e542dc.png

 通常,注射位置包括:

  (1)表单提交,主要是POST请求,还有GET请求;

  (2)URL参数提交,主要是GET请求参数;

  (3)Cookie参数的提交;

  (4)HTTP请求标头中的一些可修改值,例如Referer,User_Agent等;

  (5)一些边缘输入点,例如.mp3文件的某些文件信息。

  sql注入的危害

  SQL注入的危害不仅体现在数据库级别,而且还可能危及托管数据库的操作系统。如果将SQL注入用于挂马,还可能用来传播恶意软件等,这些危害包括但不局限于:

  (1)数据库信息泄漏:泄漏用户存储在数据库中的私人信息。作为数据存储中心,各种类型的私人信息通常存储在数据库中。 SQL注入攻击能导致这些隐私信息透明于攻击者。

  (2)篡改网页:通过操作数据库来篡改特定网页。

  (3)网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

  (4)数据库被恶意操作:数据库服务器受到攻击,数据库系统管理员帐户被篡改。

  (5)服务器受远程控制,并安装了后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

  (6)破坏硬盘数据并使整个系统瘫痪。

  如何解决SQL注入

  解决SQL注入问题的关键是严格检查可能来自用户输入的所有数据,并使用最小特权原则进行数据库配置。常用的方案有:

  (1)所有查询语句都使用数据库提供的参数化查询接口,并且参数化语句使用参数,而不是将用户输入变量嵌入SQL语句中。几乎所有当前的数据库系统都提供参数化的SQL语句执行接口。使用此接口可以有效地防止SQL注入攻击。

  (2)对进入数据库的特殊字符(’”<>&*;等)进行转义处理,或编码转换。

  (3)确认每个数据的类型。例如,数字数据必须是数字,并且数据库中的存储字段必须与int类型相对应。

  (4)应严格规定数据长度,以防在一定程度上正确执行较长的SQL注入语句。

  (5)网站每个数据层的编码是统一的。建议使用UTF-8编码。上下层编码不一致可能会导致某些过滤模型被绕过。

  (6)严格限制网站用户数据库的操作权限,并向该用户提供只能满足其工作要求的权限,从而最大程度地减少了注入攻击对数据库的危害。

  (7)阻止网站显示SQL错误消息,例如类型错误,字段不匹配等,以防止攻击者使用这些错误消息进行判断。

  (8)在网站发布之前,建议使用一些专业的SQL注入检测工具来及时检测和修补这些SQL注入漏洞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值