我理解的web安全

这篇博文仅仅是对自己理解中的web安全问题的一点总结,如有不对,欢迎指正。


一、XSS,也就是跨站脚本注入

常见分类:

1. 反射型XSS: 可通过诱使用户点击带有恶意代码的链接到目标网站,并在客户的浏览器中执行反射的恶意脚本从而窃取用户的会话cookie,等敏感的个人信息, 威胁面一般局限于单个用户。

2. 存储型XSS: 可以在目标网站保存经过精心编写的恶意代码,具有可保存及持久性的特点,当其他用户浏览或者点击带有恶意代码的链接或者网页时,用户的会话cookie等个人信息就被攻击者窃取了,威胁面一般较大,可能是大量用户,常见于论坛、博客等可以提交和保存大量文本信息的文章或者评论信息。

3. 基于DOM的XSS: 主要是因为Javascript可以访问客户端浏览器的文档对象模型从而执行恶意代码窃取用户的会话cookie等个人信息,比如,利用Javascript调用window.open()方法。


产生原因:

目标网站将输入的恶意脚本被当做普通文本进行处理


前提条件:

1. 目标站点可以被注入恶意代码

2. 恶意代码可以被浏览器执行


攻击方法:

1. 手动攻击:

编写注入脚本,比如”/><script>alert(document.cookie());</script><!--等,

手动测试目标网站上有的input, textarea等所有可能输入文本信息的区域

2. 自动攻击

利用工具扫描目标网站所有的网页并自动测试写好的注入脚本,比如:Burpsuite等


防御原则:

不相信用户的所有输入


防御方法:

1. 将cookie等敏感信息设置为httponly,禁止Javascript通过document.cookie获得

2. 对所有的输入做严格的校验尤其是在服务器端,过滤掉任何不合法的输入,比如手机号必须是数字,通常可以采用正则表达式

3. 净化和过滤掉不必要的html标签,比如:<iframe>, alt,<script> 等

4. 净化和过滤掉不必要的Javascript的事件标签,比如:onclick, onfocus等

5. 转义单引号,双引号,尖括号等特殊字符,可以采用htmlencode编码 或者过滤掉这些特殊字符

6. 设置浏览器的安全设置来防范典型的XSS注入


二、 SQL注入

产生原因:

目标网站将恶意提交的SQL语句当做正常的参数传递给了后台数据库从而获取了不应该得到的数据


前提条件:

1. 目标站点可以被注入攻击者精心构造的字符串

2. 恶意字符串可以被当做参数提交给数据库


攻击方法:

编写恶意字符串,比如‘ or  1=1--等,

手动测试目标网站上所有涉及数据库操作的地方


防御原则:

不相信用户的所有输入


防御方法:

1. 禁止目标网站利用动态拼接字符串的方式访问数据库

2. 减少不必要的数据库抛出的错误信息

3. 对数据库的操作赋予严格的权限控制

4. 净化和过滤掉不必要的SQL保留字,比如:where, or, exec 等

5. 转义单引号,上引号,尖括号等特殊字符,可以采用htmlencode编码 或者过滤掉这些特殊字符


三、CSRF,也就是跨站请求伪造

简而言之,就是攻击者冒用用户的名义,向目标站点发送请求。

攻击原理:

用户已访问目标网站A,并以正常获取了cookie,这时在未登出目标网站A的时候访问了危险网站B,而B要求访问目标站点A并发送了一个请求,此时浏览器向A发送了B要求的请求并带上cookie,目标网站A接受了这个请求并给予了相应的回复。实际上,攻击者冒用了用户的身份进行了一次请求。


防范方法:

1. 在客户端进行cookie的hashing,并在服务端进行hash认证

2. 提交请求是需要填写验证码

3. 使用One-Time Tokens为不同的表单创建不同的伪随机值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值