美文网首页
web 安全

web 安全

作者: 孟大仙 | 来源:发表于2021-04-20 17:44 被阅读0次

一、XSS (cross site script)跨站脚本攻击

首字母"X"是因为 CSS 会与层叠样式表的英文相同所以改用XSS简称。

(一)攻击方式
  1. 诱导链接(反射型攻击)
    攻击方式: 简单的说比如诱导用户打开一个连接,通过连接携带参数可执行脚本,而攻击者知道我们的代码方式,在页面能够执行或渲染,伪造可执行代码窃取用户信息(cookie等本地存储的信息),
    通过注入代码:
    ① 比如url访问 www.mydomain.com/ad?p=<script>alert(document.cookie)</script>
    ② 恰巧程序代码里面有使用这个p参数做代码执行或渲染,<script>alert(document.cookie)</script>, 此处关键代码是document.cookie, 攻击者可以在打开页面后,获取用户的cookie, 把cookie字符串提交到自己指定的服务器获得cookie数据。
    2.表单提交数据库存储,直出渲染
    web端通过表单元素输入可执行的脚本内容提交数据库存储。 前端与后端都“未做字符转义”的话,存储在数据的字符,在返回到html页面执行渲染时就会被执行,从而导致客户端用户本地数据泄露
(二)XSS (cross site script)跨站脚本防御
  1. CSP (Content-security-Policy) 网页安全政策, 白名单形式
    设置content-security-policy的方式有两种:
    (1) http header 属性 content-security-policy;
    ① 限制资源加载
    content-security-policy:
    script-src:外部脚本
    style-src:样式表
    img-src:图像
    media-src:媒体文件(音频和视频)
    font-src:字体文件
    object-src:插件(比如 Flash)
    child-src:框架
    frame-ancestors:嵌入的外部资源(比如<frame>、<iframe>、<embed>和<applet>)
    connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)
    worker-src:worker脚本
    manifest-src:manifest 文件

default-src: 默认通用限制,比如'self' 限制网站本域名下的资源。 当指定了特殊类型限制后,会使用特殊的指定,比如img-src: https://www.otherdomian.com

② Url 限制。 网页内的其它网页链接
frame-ancestors:限制嵌入框架的网页
base-uri:限制<base#href> 限制基准
form-action:限制<form#action> 限制表单提交

(2) <meta> 标签
<meta http-equiv="Content-security-policy" content="sth..." />
content内容与上面header部分设定一致。类型多个通过“;”分割,同一类型限制白名单内容通过空格分割。

  1. httponly cookie
    设定浏览器客户端cookie不可访问,只可以被http服务器所读取,防止恶意脚本窃取可读cookie;在设置cookie时设置httponly
  2. 转义字符
    对输入文本、输出文本转义字符,避免执行渲染
    function escape(str) {
    str = str.replace(/&/g, '&')
    str = str.replace(/</g, '<')
    str = str.replace(/>/g, '>')
    str = str.replace(/"/g, '&quto;')
    str = str.replace(/'/g, ''')
    str = str.replace(/`/g, '`')
    str = str.replace(///g, '/')
    return str
    }

对于特殊情况,比如富文本,需要正常输入、输出渲染的,可以过滤脚本代码 <script>为<script>

二、CSRF (跨站请求伪造)

跨站请求伪造,顾名思义是通过另外的站点伪造请求。

(一)攻击方式

比如访问了某个网站进行了登录A,此时cookie已经存在;然后被一种极具吸引力的图片或内容所吸引,点击进行了访问网站B,而在这个网站做了某些操作比如点击某个按钮或进入页面自动提交表单跳转到 你已登录的网站A页面,进行伪造请求。
攻击条件:

  1. cookie已产生
    用户登录的网站A,本地产生了cookie
  2. 网站未退出
    既忙其他事情,或忘记突出登录,cookie依然存在且在有效期
  3. 网站A没有做CSRF防御
    没有针对伪造请求做防御
(二)防御
  1. Header头信息的Referer属性检查
    在某些关键步骤页面的请求增加request header的Referer检验是否是指定的域名页面地址
  2. 增加验证码或token校验比对
    在关键步骤请求接口时增加验证码或token校验
  3. same site
    在设置本地cookie时指定same site, 不随跨域请求携带cookie, 该属性浏览器支持度还不够

三、伪造网站点击

攻击者通过在自己做的网站引入iframe展示目标网站的形式来引诱用户点击。

(一)攻击方式

通过障眼法技术手段,在网站通过iframe展示目标网站, 在网站悬浮透明的遮罩层等,用户点击后是访问了攻击者准备的网站

(二)防御手段
  1. 服务器响应头设置X-FRAME-OPTIONS属性
    通过设置response header的X-FRAME-OPTIONS来防御iframe嵌套网站。
    X-FRAME-OPTIONS: DENY | SAMEORIGIN | ALLOW-FROM 三个可选值。
    DENY 表示拒绝通过iframe展示。
    SAMEORIGIN 表示同域名下允许iframe展示网站。
    ALLOW-FROM http://www.mydomain.com;表示允许指定域名下iframe展示网站,多个域名逗号隔开。
  2. meta标签http-equiv
    // meta 标签http-equiv, 强制当前窗口已独立页面显示,防止别人在框架里面引用页面
<meta http-equiv="Window-target" content="_top">
  1. javascript 脚本防御
    对于一些很旧的浏览器,不能支持以上设置,通过js 脚本判断页面窗口是否是top是否是self本身。
    代码:
<script>
// 如果自己不是顶部窗口,代表是在iframe内
if (self !== top) {
  document.documentElement.style.display = 'none'
}
</script>

四、URL 跳转漏洞

通过一些网站内在实现的跳转url, 使用户访问到目标网站

(一)攻击方式

例如某个网站www.domain.com/link?url=xxxx, 黑客可以通过知名网站链接形式,做点击链接跳板最终跳到指定的网站

(二)防御
  1. referer 判断来源
  2. 生成的url 携带token, server 端验证 token ,来确定是不是自己生成的url,而非网站的程序

五、SQL注入

sql注入是攻击者利用sql语句的拼接执行代码的漏洞来做的攻击。
(一)攻击方式

  1. ' or 1=1, 比如用于某个查询语句 /:id/detail, 而sql语句(select * from order where id = 变量),而攻击者通过控制输入的变量, ' or 1=1 --, 此时为true,就可以使where语句后面代码失效,从而查询所有的订单
  2. ' -- , “--”为注释的意思,select * from user where username='admin' -- ' and psw='123456'
    从-- 开始后面的都会被注释掉,从而可以查询user表为admin的用户信息
    (二)防御
  3. 正则匹配校验是否符合预期
  4. 变量值过滤转换
  5. 预编译语句PreparedStatement ? 站位符
  6. 使用参数化接口方法语句
    参考资料:

常见六大Web安全攻防解析

Content Security Policy 入门教程

相关文章

  • web安全

    1、初步认识web安全:` - 安全与安全圈 - web应用与web安全的发展 - web安全隐患与本质...

  • 小猿圈Web安全性测试介绍

    相信大家对于Web安全很陌生,现在很多人对于web安全更是没有听过,那么你知道web安全吗?那么你知道Web安全性...

  • web安全测试文章

    Web安全测试漏洞场景 web安全性测试用例 验证码的测试用例分析 WEB安全测试的类型 Web安全测试中常见逻辑...

  • web安全(web应用安全)

    摘自极客学院 甲方和乙方: 甲方:腾讯阿里等,需要安全服务的公司 乙方:提供安全服务、产品而服务型安全公司(绿盟、...

  • web前端安全的攻与防

    一、什么是web安全? web安全,也叫web应用安全,《白帽子讲Web安全》一书中第一章最后有这么一句话讲的很好...

  • 小猿圈解析Web安全之如何制定学习计划

    去年开始web安全热度逐渐上升,web安全工程师成为炙手可热的人才之一,web安全的火热造成了很多朋友都在自学,但...

  • 浏览器安全

    浏览器安全可以分为三大块——Web 页面安全、浏览器网络安全和浏览器系统安全 Web 页面安全 为确保页面安全,浏...

  • web安全

    XSS 是什么?如何防范 CSRF是什么?如何防范

  • web安全

  • Web安全

    发布自Kindem的博客,欢迎大家转载,但是要注意注明出处。另外,该文章收纳在Kindem的个人的 IT 知识整理...

网友评论

      本文标题:web 安全

      本文链接:https://www.haomeiwen.com/subject/lxerhltx.html