• 【无标题】


    这是我参与「第四届青训营」笔记创作活动的的第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预处理的,然后放入参数。
  • 相关阅读:
    DevOps|乱谈开源社区、开源项目与企业内部开源
    辅助驾驶功能开发-执行器篇(03)-Mobileye Control Requirements
    MEV进入比特币,它将改变比特币挖矿?
    webpack提升构建速度
    源码中的设计模式--单例模式
    卸载Docker
    linux的“>”和“>>”
    哥斯拉加密WebShell过杀软
    面试经典150题——Day13
    PHP 服装销售管理系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp
  • 原文地址:https://blog.csdn.net/ProgramNovice/article/details/126127361