• 【无标题】


    这是我参与「第四届青训营」笔记创作活动的的第8天。

    SQL注入简介

    SQL 注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过 SQL 语句,实现无账号登录,甚至篡改数据库。

    SQL 注入攻击是通过将恶意的 SQL 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。

    SQL注入的产生原因

    当我们访问动态网页时, Web 服务器会向数据访问层发起 SQL 查询请求,如果权限验证通过就会执行 SQL 语句。

    这种网站内部直接发送的 SQL 请求一般不会有危险,但实际情况是很多时候需要结合用户的输入数据动态构造 SQL 语句,如果用户输入的数据被构造成恶意 SQL 代码,Web 应用又未对动态构造的 SQL 语句使用的参数进行审查,则会带来意想不到的危险。

    SQL注入的威胁

    • 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
    • 绕过认证,列如绕过验证登录网站后台。
    • 注入可以借助数据库的存储过程进行提权等操作

    SQL注入漏洞对于数据安全的影响

    • 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
    • 网页篡改:通过操作数据库对特定网页进行篡改。
    • 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
    • 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
    • 服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
    • 破坏硬盘数据,瘫痪全系统。

    SQL注入原理

    用户在输入用户名的时候直接输入万能密码:xxx' or 1 #,那么最后拼接的SQL会变为:select * from user where name = 'xxx' or 1 # and password = '123456'; #符号代表SQL语法中的注释,上面的SQL就如同 select * from user where name = 'xxx' or 1。这样是可以查询到用户信息的,所以用户就登录了系统。

    防范SQL注入

    1. 过滤非法字符:保证传来的字符串作为一个参数,而不是语句拼接的一部分。所以需要对特殊字符进行转义,可以使用addslashes函数,我们可以给$_GET$_POST$_COOKIE等几个数组进行转义。
    2. 确保正确的数据类型:判断url或表单中传来的数据是否为想要的数据类型,如果不是,进行相应的数据类型转换。
    3. 使用正则表达式:设置用户的输入规则,限制用户不按规则输入。
    4. 使用预处理而不是拼接SQL语句:可以使用mysqli、PDO来操作数据库。因为它们都是将SQL预处理的,然后放入参数。
  • 相关阅读:
    计算机毕业设计node+vue基于微信小程序的校园盲盒小程序的设计与实现
    【2023.10.25练习】数据库-函数2
    windows下gdal的java开发环境搭建
    【Liunx】部署WEB服务:Apache
    平方根计算在加速度传感器中的应用
    AC自动机小结
    Listen、Attention、Spell模型
    [JS] canvas 详解
    简单的Hystrix熔断
    VS2019 添加afxdisp.h文件后提示CString不明确 解决方法
  • 原文地址:https://blog.csdn.net/ProgramNovice/article/details/126127361