注入攻击-XSS攻击-CSRF攻击

1.注入攻击

注入攻击包括系统命令注入,SQL注入,NoSQL注入,ORM注入等

1.1攻击原理

在编写SQL语句时,如果直接将用户传入的数据作为参数使用字符串拼接的方式插入到SQL查询中,那么攻击者可以通过注入其他语句来执行攻击操作,这些攻击操作包括可以通过SQL语句做的任何事:获取敏感数据、修改数据、删除数据库

1.2攻击示例

cur = db.execute("SELECT * FROM students WHERE password=‘%s‘;" % password);

如果攻击者传入的password参数值为  ‘or 1=1 --  那么最终的被执行的SQL语句将变成:

SELECT * FROM students WHERE password=‘‘ or 1=1 --;‘

这样students表中的所有记录全部查询并返回,意味着所有记录都被攻击者窃取了

备注:在SQL中;用来结束一行语句。--用来注释后面的语句

1.3主要防范方法

1)使用ORM可以一定程度避免SQL注入问题

2)验证输入类型,比如限制URL规则中的变量为整型

3)参数化查询,在构造SQL语句中避免拼接字符串或字符串格式化(使用百分号或format方法)

cur = db.execute(‘SELECT * FROM students WHERE password=%s‘,password);

4)转义特殊字符,比如引号、分号和横线。使用参数化查询时,各种接口库会为我们做转义工作



2.XSS攻击(Cross-Site Scripting,跨站脚本,因为Cross有交叉的意思故为X,从而区分CSS)

XSS攻击历史悠久,最远可以追溯到90年代,但至今仍然时危害范围非常广的攻击方式。

2.1攻击原理

XSS是注入攻击的一种,攻击者通过将代码注入被攻击者的网站中,用户一旦访问网页就会执行被如注入的恶意脚本。XSS攻击分为反射型XSS攻击和存储型XSS攻击。

2.2攻击示例

反射型XSS又称非持久型XSS。例如如下代码:

response = ‘<h1>Hello, %s!</h1>‘ % name;

如果恶意用户输入一段javascript代码作为查询参数name的值

http://example.com/hello?name=<script>alert(‘Bingo!‘);</script>

客户端接收的响应将变为下面的代码

<h1>Hello, <script>alert(‘Bingo!‘);</script>!</h1>

原本的展示标题就有了弹窗,所以可以通过这种方式执行任意JavaScript代码,如:窃取用户的cookie、重定向到钓鱼网站、发送其他请求。

存储型XSS也被称为持久型XSS,这种类型XSS攻击更常见,危害更大,它和非持久型XSS类似,不过它会把攻击代码存储到数据库中,任何访问包含攻击代码的页面都会殃及。例如:

某个网站通过表单接收用户的留言,如果服务器接收数据后未经处理就存储到数据库中,那么用户可以在留言中插入任意的javascripte代码,例如:

<script>window.location.href="http://attacker.com";</script>

其他用户一旦访问到留言板页面就会执行其中的javascript脚本,从而重定向到攻击者写入的站点。

2.3防范措施

1)HTML转义,转义后可以确保用户输入的内容在浏览器中作为文本显示,而不是作为代码解析。这里的转义和python中的概念相同,把变量标记的内容标记为文本,具体来说,会把变量中与HTML相关的符号转换为安全字符,以避免变量中包含影响页面输出的HTML标签和恶意代码。转义后,文本中的特殊字符都会转义成HTML实体,HTML转义如&lt表示小于号<。

2)验证用户输入



3.CSRF攻击

CSRF(Cross Site Request Forgery,跨站请求伪造),又被称为one-click attack 或者 session riding。

3.1攻击原理

CSRF攻击方式如下:

用户登录了A网站,认证信息保存在cookie中,当用户访问攻击者创建的B网站时,攻击者通过在B站发送一个伪造的请求提交到A网站服务器上,让A网站服务器误以为请求来自于自己的网站,于是执行相应的操作,该用户信息就遭到了篡改。

3.2攻击示例

3.3防范措施

1)正确使用HTTP方法

-GET方法:属于安全方法,不会改变资源状态,仅用于获取资源,因此又被称为幂等方法,页面中所有可以通过链接发起的请求都属于GET请求。

-POST方法:用于创建、修改和删除资源。在HTML中使用form标签创建表单并设置提交方法为POST,在提交时会创建POST请求。

2)CSRF令牌校验

当处理非GET请求时,除了在表单中加入验证码,一般还可以在表单隐藏字段里和session变量(签名cookie)中中加入伪随机数来防御CSRF攻击,这个伪随机数称为CSRF令牌(token)

原文地址:https://www.cnblogs.com/hwnzy/p/11219475.html

时间: 2024-11-10 06:05:41

注入攻击-XSS攻击-CSRF攻击的相关文章

前端安全之XSS和csrf攻击

1.Csrf攻击概念: csrf攻击(Cross-site request forgery):跨站请求伪造; 2.Csrf攻击原理: 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cookie. 从上图可以看出,要完成一次CSRF攻击,受害者必须满足两个必要的条件: (1)登录受信任网站A,并在本地生成Cookie.(如果用户没有登录网站A,那么网站B在诱导的时候,请求网站A的api接口时,会提示你登录) (2)在不登出A的情况下,访问危险网站B(其实是利用了网站A的漏洞). 我们在

xss和csrf攻击

xss:跨站脚本攻击(Cross Site Scripting) .XSS利用站点内的信任用户.恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时 ,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的.XSS 的根本之道还是过滤用户输入.攻击通过在授权用户访问 的页面中包含链接或者脚本的方式工作 csrf:跨站请求伪造(Cross-site request forgery) 冒充用户在站内的正常操作.绝大多数网站是通过 cookie 等方式辨识用户身份(包括使

XSS 和 CSRF 攻击

网站安全的基础有三块: (1) 防范中间人攻击 (TLS mim, man in the middle) 当主机A.和机B通信时,都由主机C来为其"转发",而A.B之间并没有真正意思上的直接通信,他们之间的信息传递同C作为中介来完成,但是A.B却不会意识到,而以为它们之间是在直接通信.这样攻击主机在中间成为了一个转发器,C可以不仅窃听A.B的通信还可以对信息进行篡改再传给对方,C便可以将恶意信息传递给A.B以达到自己的目的. 防范的方法是: 必须对认证过程的传输者认证过程的本身真实性进

常见web安全问题,SQL注入、XSS、CSRF,基本原理以及如何防御

1.SQL注入原理:1).SQL命令可查询.插入.更新.删除等,命令的串接.而以分号字元为不同命 令的区别.(原本的作用是用于SubQuery或作为查询.插入.更新.删除--等 的条件式)2).SQL命令对于传入的字符串参数是用单引号字元所包起来.(但连续2个单引 号字元,在SQL资料库中,则视为字串中的一个单引号字元)3).SQL命令中,可以注入注解预防:1).在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据 访问功能.2).在组合SQL字符串时,先针对

CSRF 攻击原理和防御方法

1. CSRF攻击原理 CSRF(Cross site request forgery),即跨站请求伪造.我们知道XSS是跨站脚本攻击,就是在用户的浏览器中执行攻击者的脚本,来获得其cookie等信息.而CSRF确实,借用用户的身份,向web server发送请求,因为该请求不是用户本意,所以称为“跨站请求伪造”. 一般而且存在XSS漏洞的网站,也极有可能存在CSRF漏洞.因为CSRF攻击中的那个“伪造的请求”的URL地址,一般是通过XSS攻击来注入到服务器中的.所以其实CSRF是以XSS为基础

python web框架Flask——csrf攻击

CSRF是什么? (Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XS

如何防止CSRF攻击?

CSRF攻击 CSRF漏洞的发生 相比XSS,CSRF的名气似乎并不是那么大,很多人都认为CSRF“不那么有破坏性”.真的是这样吗? 接下来有请小明出场~~ 小明的悲惨遭遇 这一天,小明同学百无聊赖地刷着Gmail邮件.大部分都是没营养的通知.验证码.聊天记录之类.但有一封邮件引起了小明的注意: 甩卖比特币,一个只要998!! 聪明的小明当然知道这种肯定是骗子,但还是抱着好奇的态度点了进去(请勿模仿).果然,这只是一个什么都没有的空白页面,小明失望的关闭了页面.一切似乎什么都没有发生…… 在这平

SpringSecurity的防Csrf攻击

CSRF(Cross-site request forgery)跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRF或XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装成受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性. CSRF是一种依赖web浏览器的

CSRF攻击与防御(写得非常好)

转载地址:http://www.phpddt.com/reprint/csrf.html        CSRF概念:CSRF跨站点请求伪造(Cross-Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,你可以这样来理解:       攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件.发消息,盗取你的账号,添加系统管理员,甚至于购买商品.虚拟货币转账等. 如下:其中Web A为

CSRF攻击(转)

CSRF攻击 什么是cross-site request forgeryCross-site request forgery:跨站请求伪造,也被称成为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用.尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相 左.XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站.与XSS攻击相比,CSRF攻击往往不大流行(因此对其 进行