前言

余为前端菜鸟,感姿势水平匮乏,难观前端之大局。遂决定循前端知识之脉络,以兴趣为引,辅以几分坚持,望于己能解惑致知、于同道能助力一二,岂不美哉。

本系列代码及文档均在 此处

三大攻击

XSS(cross site script, 跨站脚本攻击),SQL注入和CSRF(cross-site request forgery, 跨站请求伪造)是最常见的几种web攻击行为

XSS

由带有页面可解析内容的数据未经处理直接插入到页面解析导致

  • 存储型XSS

    后台从数据库中读取数据返回,在前端页面模板中直接渲染

    <div>{{ content }}</div>
    <!-- content ---> <script>alert(1)<script> -->
    <!-- 渲染后 -->
    <div><script>alert(1)<script></div> 复制代码
  • MXSS(Dom XSS)

    将脚本插入Dom属性中被解析导致

    <div class="abcd {{ content }}"></div>
    <!-- content ---> "><script>alert(2)</script><div class="efgh -->
    <!-- 渲染后 -->
    <div class="abcd"><script>alert(2)</script><div class="efgh"></div>
    复制代码
  • 反射性XSS

    在url中注入了可解析内容,页面渲染时用到了这些参数导致

    // 例如node服务器处理页面请求时
    let name = req.query['name']
    // name=<script>alert(3)<script>
    this.body = `<div>${name}</div>`
    // 渲染后
    <div><script>alert(3)<script></div> 复制代码

一般处理方式:

  • HTML编码:将特殊字符如<, >等进行转换,转换为HTML字符实体
  • js编码:使用Unicode码位替换特殊字符
  • Url编码:%加ASCII码

具体的东西有点多啊,暂时先放放,以后对安全竞赛感兴趣了再补充

CSRF

伪站点从源站点获取了用户信息后直接调用服务接口。 一般的处理的方式是通过服务下发加密过的token,并在后续请求中由前端带上到服务端进行token验证。但这样也不一定安全。

SQL注入

一个例子:

// 请求url GET /xxx/xxx?id=100 or name=derek
// server
sql = `select * from user where id =${req.query.id}`
exec(sql)
// 得到了意料之外、预谋已久的信息
复制代码

一般处理方式是服务端对于参数进行校验

请求劫持

DNS劫持

顾名思义,DNS服务器(DNS解析各个步骤)被篡改,修改了域名解析的结果,使得访问到的不是预期的ip

HTTP劫持

运营商劫持,此时大概只能升级HTTPS了

浏览器安全控制

  • X-XSS-Protection

    防止反射型XSS

  • Strict-Transport-Security

    强制使用HTTPS通信

  • Content-Secure-Policy

    指定浏览器只可以加载指定可信域名来源的内容,可以在响应头中返回,也可在页面meta标签内指定

    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
    复制代码
  • Access-Control-Allow-Origin

    设置可访问该服务器资源的域

虽发表于此,却毕竟为一人之言,又是每日学有所得之笔记,内容未必详实,看官老爷们还望海涵。

前端日拱一卒D5——web安全基础相关推荐

  1. 前端日拱一卒D9——ES6笔记之基础篇

    前言 余为前端菜鸟,感姿势水平匮乏,难观前端之大局.遂决定循前端知识之脉络,以兴趣为引,辅以几分坚持,望于己能解惑致知.于同道能助力一二,岂不美哉. 本系列代码及文档均在 此处 最近几天有点忙,啃啃老 ...

  2. 日拱一卒,集小胜为大胜; 学以致用,在战争中学习战争;

    项目,证明自己的学习能力: 短期掌握尽可能多的知识,并且连线总结成为网络 : 日拱一卒,集小胜为大胜: 学以致用,在战争中学习战争: 投入足够的时间: 学习中的总结,理解 ,应用,等编程套路: 目的性 ...

  3. CSDN20周年直播分享:日拱一卒,成为技术合伙人,力争财务自由

    公开课主题:日拱一卒,成为技术合伙人,力争财务自由 内容介绍 成为技术合伙人,是广大技术达人最靠谱的职业发展方向,也是实现个人财富自由的可行方法之一. 听众受益 学习方法.职业发展规划.技术方向的选择 ...

  4. 社区人物志|李昊鹏:日拱一卒,功不唐捐

    「社区人物志」是 Apache Doris 社区推出的系列专栏,我们关注每一个对 Doris 做出过贡献的 Contributor ,会定期从对 Doris 做出突出贡献的小伙伴中选出一位「社区之星」 ...

  5. EAUML日拱一卒 总目录

    用例图 EA&UML日拱一卒 用例图开篇 EA&UML日拱一卒 用例包含关系 EA&UML日拱一卒 用例泛化关系 EA&UML日拱一卒 用例扩展关系 类图 EA& ...

  6. 【日拱一卒】如何编写测试用例(上)

    [日拱一卒]如何编写测试用例(下) [写在前面的话] 测试用例(Test Case)是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 测试用 ...

  7. 【日拱一卒】如何编写测试用例(下)

    [日拱一卒]如何编写测试用例(上) 六.测试用例设计的误区 ·能发现到目前为止没有发现的缺陷的用例是好的用例: 首先要申明,其实这句话是十分有道理的,但我发现很多人都曲解了这句话的原意,一心要设计出发 ...

  8. 别做操之过急的”无效将军”,做实实在在的”日拱一卒” zz

    别做操之过急的"无效将军",做实实在在的"日拱一卒" 前天在网上看到一句话很不错,拿来和大家分享,同时用我的"大叔"三观来解读这句话. 这句 ...

  9. 别做操之过急的”无效将军”,做实实在在的”日拱一卒”

    前天在网上看到一句话很不错,拿来和大家分享,同时用我的"大叔"三观来解读这句话. 这句话是:"我们不需要操之过急的"无效将军",我们需要实实在在的&q ...

  10. 日拱一卒,功不唐捐 | 每日思考俱乐部 专栏更新通知

    缘起 在 2019 年七月份,我写了一篇文章<我为什么要写反思录>.文中提到了我做记录和思考的初衷,起初写在了自己的私密仓库中,也就是其他人都看不到. 持续了一段时间后,我发现,没有分享的 ...

最新文章

  1. android 获取指定月份的开始时间 结束时间
  2. Effective C++ --7 模板与泛型编程
  3. Python-OpenCV之图片缩放(cv2.resize)
  4. AtCoder AGC043C Giant Graph (图论、SG函数、FWT)
  5. NVelocity系列:NVelocity配置详解
  6. 春节福利:《Oracle性能优化与诊断案例精选》电子版首次公开下载
  7. 曝Redmi Note 9系列下周发布:最便宜的一亿像素手机
  8. OpenShift 4 - DevSecOps Workshop (5) - 为Pipeline增加测试Task
  9. Windows中内存泄漏检测工具vld简介及使用
  10. 戴尔linux恢复镜像,如何从官网下载并使用系统恢复映像
  11. 士不可以不弘毅,任重而道远!
  12. 计算机程序占用端口,程序启动发现端口被占?3步查出它是谁!
  13. Go语言设计与实现 -- 内存管理器
  14. FlexiTimer2库下载 无偿 分享 仅供学习
  15. SecureCRT连接后乱码问题!!!
  16. 矩阵旋转(左旋,右旋)
  17. gradle-5.4.1-all.zip下载与替换
  18. linux笔记(6):东山哪吒D1H测试HDMI显示内置图片-命令行调试
  19. 解决Linux虚拟机无法打开,报无法打开虚拟机“Kylin” (D:\javaToil\linux\Kylin\Kylin.vmx): 虚拟机似乎正在使用中
  20. 漫长的告别读后感 - 说一声再见,就是死去一点点

热门文章

  1. 云原生:云计算时代命题之终极解决方案
  2. 1.7 非平衡数据的处理方法大全
  3. linux下下载fnl数据,NCEP再分析资料FNL数据在windows平台用cygwin批量下载方法
  4. python将txt读入矩阵_python读入txt数据,并转成矩阵
  5. 相对开音节java,L314 单音节词读音规则(二)-元音字母发音规则
  6. 蓝桥杯2021年第十二届C++省赛第四题-货物摆放
  7. 蓝桥杯2015年第六届C/C++省赛C组第一题-隔行变色
  8. Futter基础第6篇: 实现网格布局【GridView、GridView.count、GridView.builder】
  9. L1-017 到底有多二 (15 分) — 团体程序设计天梯赛
  10. Android编译判定BoardConfig.mk的宏控是否打开或者有效的验证方法