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('Attack!');</script>

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

<h1>Hello, <script>alert('Attack!');</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)

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

  1. 前端安全之XSS和csrf攻击

    1.Csrf攻击概念: csrf攻击(Cross-site request forgery):跨站请求伪造; 2.Csrf攻击原理: 用户是网站A的注册用户,且登录进去,于是网站A就给用户下发cook ...

  2. xss和csrf攻击

    xss(cross site scripting)是一种最常用的网站攻击方式. 一.Html的实体编码 举个栗子:用户在评论区输入评论信息,然后再评论区显示.大概是这个样子: <span> ...

  3. XSS 和 CSRF 攻击

    web安全中有很多种攻击手段,除了SQL注入外,比较常见的还有 XSS 和 CSRF等 一.XSS(Cross Site Scripting)跨站脚本 XSS其实就是Html的注入问题,攻击者的输入没 ...

  4. XSS与CSRF攻击

    一.XSS Cross Site Script,跨站脚本攻击.是指攻击者在网站上注入恶意客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一 ...

  5. xss 和 csrf攻击详解

    在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是,历史同 ...

  6. 安全|常见的Web攻击手段之CSRF攻击

    对于常规的Web攻击手段,如XSS.CRSF.SQL注入.(常规的不包括文件上传漏洞.DDoS攻击)等,防范措施相对来说比较容易,对症下药即可,比如XSS的防范需要转义掉输入的尖括号,防止CRSF攻击 ...

  7. 安全防御之防xss、SQL注入、与CSRF攻击

    XSS攻击 个人理解,项目中最普通的就是通过输入框表单,提交js代码,进行攻击例如在输入框中提交 <script>alert("我是xss攻击");</scrip ...

  8. XSS攻击 CSRF攻击

    XSS攻击: 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, 故将跨站脚本攻击缩写为XSS.恶意攻击者 ...

  9. XSS攻击 && CSRF攻击 基础理解

    一个网站,不管多么的帅气,多么的风骚,如果你不安全,那始终都是一个弟弟啊~ 今天又看了下XSS和CSRF攻击的文章,我也想发点什么普及下大家的安全意识,毕竟作为一名拥有伟大梦想的程序员,基本的安全意识 ...

  10. 浅析history hack、心血漏洞、CSS欺骗、SQL注入与CSRF攻击

    漏洞产生的原因主要有系统机制和编码规范两方面,由于网络协议的开放性,目前以 Web 漏洞居多 关于系统机制漏洞的典型有JavaScript/CSS history hack,而编码规范方面的漏洞典型有 ...

随机推荐

  1. MySQL 其它基本操作

    索引 所谓索引,就是类似于书的目录,目的也类似,都是为了提高检索速度.ALTER TABLE <表名> ADD INDEX <索引名(列名)>;或者CREATE INDEX & ...

  2. C++开源库,欢迎补充

    C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语 ...

  3. kube框架结构-一个小型响应式CSS框架

    当你开始初建一个新的项目时,你可能需要一个不太复杂的基础框架,Kube框架应该是你最好的选择.一个独立的CSS文件,帮助你更简单的创建响应式的的布局设计. Kube Framework包括网格.按钮. ...

  4. admin组件的使用

    导进来的模板不能直接放到static里,要从其他的地方移动到static里,否则pycharm不能自动改变路径2.自关联class Userunfo(models.Model):    title=m ...

  5. Paragon NTFS for Mac 15.5.53 中文破解版(激活码)下载

    Paragon NTFS for Mac中文破解版是一款超级受欢迎的简单.高效.安全的格式读写软件,提供给大家,再也不用到处找Paragon NTFS序列号和Paragon NTFS激活码啦,帮您轻松 ...

  6. IOS 数据存储(NSKeyedArchiver 归档篇)

    什么是归档 当遇到有结构有组织的数据时,比如字典,数组,自定义的对象等在存储时需要转换为字节流NSData类型数据,再通过写入文件来进行存储. 归档的作用 之前将数据存储到本地,只能是字符串.数组.字 ...

  7. 机器学习经典算法之KNN

    一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...

  8. 自定义vue全局组件use使用、vuex的使用

    自定义vue全局组件use使用(解释vue.use()的原理)我们在前面学习到是用别人的组件:Vue.use(VueRouter).Vue.use(Mint)等等.其实使用的这些都是全剧组件,这里我们 ...

  9. Junit4使用详解一:测试失败的两种情况

    Junit4最佳实践 1.把测试文件夹和代码文件夹分离,这两者的代码互不干扰,代码目录和测试目录是并列的关系 2.Java代码 3.创建单元测试代码文件 4.运行测试代码  5.查看测试结果 现在的情 ...

  10. [UWP]从头开始创建并发布一个番茄钟

    1. 自己用的番茄钟自己做 在PC上我一直使用"小番茄"作为我的番茄钟软件,我把它打开后放在副显示器最大化,这样不仅可以让它尽到本分,而且还可以告诉我的同事"我正在专心工 ...