SQL注入

本文介绍了SQL注入的概念,涉及数据库和SQL语言的基础知识,以及Web应用程序的三层架构(展示层、业务逻辑层和数据访问层)。讲解了如何防止SQL注入攻击及其潜在影响。
摘要由CSDN通过智能技术生成

前言

Hi~ o( ̄▽ ̄)ブ我是忆南平,是一名刚刚开始学习网安的新人。这篇博客主要记录我学习时候的内容和想法,希望能做到一篇文章入门一种基本web漏洞!如果有什么地方写的不好或者有什么错误欢迎大伙指出批评~~

ps:该文章包含大量我作为初学者的学习过程和内容,可能会显得有些话痨嘻嘻(●'◡'●)。作为初学者很多地方可能写的不够详细或者有错误,希望大家能在评论区积极讨论啦

在SQL注入前,我们需要了解的

要了解什么是SQL注入,首先需要对数据库、SQL语言及它们在实际应用中的作用有一定的了解。

数据库与SQL

数据库是一个组织和存储数据的系统。它可以处理大量数据,使其能够被快速访问,管理和更新。数据库系统允许用户定义和操作数据,从而提高了数据的质量,可靠性和安全性。

SQL(Structured Query Language)是管理关系数据库的语言。SQL允许用户执行各种操作,例如创建,读取,更新和删除存储在数据库中的数据。它是一种标准的语言,因此可以访问不同类型的数据库,包括MySQL,Oracle,Microsoft SQL Server和PostgreSQL等。

不同的类型的数据库有很多细节上的区别!!!像是注释在Oracle中是“--”,而在MySQL中是“-- ”[注意双破折号后面的空格],还有它们的一些内置资源(像默认表)也不相同。这些细节影响着我们对payload的设计,至于究竟有哪些区别,等我们到实践中再细细研究吧~

SQL语言包含以下几种类型的语句:

  • 查询语句:用于获取数据库中存储的数据
SELECT * FROM table_name; 
-- 从表中选择所有列和所有行的数据

SELECT * FROM users WHERE username='admin' AND password='' OR '1'='1';
-- 这将返回所有的用户数据,因为'1'='1'始终为真,使整个语句返回真。
  • 插入语句:用于将新数据插入到数据库中
INSERT INTO table_name (column1, column2) VALUES (value1, value2); 
-- 向表中插入一行新数据
  • 更新语句:用于更改数据库中的数据
UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; 
-- 更新表中符合条件的数据的指定列的值
  • 删除语句:用于从数据库中删除数据
DELETE FROM table_name WHERE condition; 
-- 从表中删除符合条件的数据
  • 表操作语句:用于创建,修改和删除表(即组织和存储数据的方式)
CREATE TABLE table_name (column1 datatype, column2 datatype); 
-- 创建一个新的表

ALTER TABLE table_name ADD column_name datatype; 
-- 向表中添加一个新的列

DROP TABLE table_name; 
-- 删除表
  • 索引操作语句:用于创建,修改和删除索引(即加快数据访问速度的方式)
CREATE INDEX index_name ON table_name (column1); 
-- 在表的指定列上创建一个新的索引

ALTER INDEX index_name RENAME TO new_name; 
-- 重命名索引

DROP INDEX index_name; 
-- 删除索引

对于数据库管理员和后端开发人员来说,SQL是一种强大而灵活的语言,使得数据管理变得更加容易和高效。

web应用程序的三层架构

Web应用程序的三层架构是指将应用程序分为展示层【视图层】(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)三个层次,以实现各自的功能,增强系统的可维护性和可扩展性。

1. 展示层(Presentation Layer):它负责接收用户的请求,并将结果呈现给用户。主要涉及用户界面、页面组织、数据格式化等相关技术。在Web应用程序中,展示层通常由HTML、CSS、JavaScript和服务器端的模板引擎组成。

2. 业务逻辑层(Business Logic Layer):它是Web应用程序的核心,负责处理应用程序的核心逻辑。它通常包括了各种业务逻辑和业务流程,数据校验、业务规则和应用程序逻辑等。业务逻辑层主要由编程语言实现,如Java、Python等。

3. 数据访问层(Data Access Layer):它是连接数据库的桥梁,负责与数据库进行交互,从数据库中获取或存储数据。数据访问层的技术包括数据库之间的连接、SQL语言的运用、数据访问方法等。数据访问层主要由各种ORM框架实现,如Hibernate、Mybatis等。

以上三层互不相干,但彼此之间需要合理地协调和配合。这种架构模式使得应用程序的开发更加模块化和可维护性更高,使得各个层次的开发人员能够并行的开发和维护各自的任务。

什么是SQL注入

SQL注入是一种广泛利用Web应用程序缺陷的攻击方式,攻击者通过将恶意SQL代码注入到应用程序输入字段中来获取对数据库的非授权访问权限。攻击者可以利用SQL注入攻击来绕过应用程序的身份验证和权限控制,从数据库中窃取敏感信息,修改、删除或插入数据,甚至完全控制数据库。

SQL注入的原理是在 Web 应用程序中,数据未经充分验证或处理就被输入到 SQL 查询中。攻击者可以利用这个缺陷来注入恶意代码,从而执行未经授权的数据库操作。攻击者可以使用各种技术和工具来发现和利用SQL注入漏洞,从而入侵目标系统。

一次成功的SQL注入攻击会造成什么样的影响


成功的SQL注入攻击可能导致对敏感数据(如密码、信用卡详细信息或个人用户信息)的未经授权访问。近年来,许多备受瞩目的数据泄露都是SQL注入攻击的结果,导致声誉受损和监管罚款。在某些情况下,攻击者可以获得进入组织系统的持久后门,从而导致长期的危害,而这种危害可能会在很长一段时间内被忽视。

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忆南平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值