白话web安全
伤心往事
梦回大二,那时候沉迷于毒奶粉,甚至国庆都在宿舍与毒奶粉共同度过,但是却发生了一件让我迄今难忘的事情~
我新练的黑暗武士被盗了!!!干干净净!!!
虽然过了好久了,但是记忆犹新啊,仿佛发生在昨天。记得那时候还在屯材料,金色小晶体是什么的。没日没夜的刷图攒钱,倒买倒卖假粉,真紫。后来刷悲鸣的时候爆了一把虫炮(一把价格蛮高的手炮武器),把我激动的哟。
然后就挂到拍卖行了,不一会居然有人私信我,说他看中了,但是游戏里的金币不够,看他挺诚心的,就和他商量怎么办~
最终方案就是他让我登录一个网站,然后输入我的qq号、密码。他会在那个网站上给我转钱。而且价格要比拍卖行高,我一想,不亏!就去了,但是当我输入账号密码后,我的游戏被中断了。等我马不停蹄的登录账号后,我的材料,武器,金币都没了~~
虽然说这个事和网络安全关系不是很大,完全是因为自己啥都不懂,那个网站应该不是腾讯官方的。相当于我把我的账号密码主动泄漏给他人了~
不过如果你想保护好的你的账号和隐私,对于网络安全还是有必要进行了解的。
csrf攻击
煮个例子:
- 我登陆了腾讯官方网站(qq.com),这时候我的身份信息就被保留在cookies中了
- 那个坏人骗我访问另外一个非腾讯官网网站(xx.com)
- xx.com有一段脚本会发往请求到qq.com,比如qq.com/some-action,这时候会携带之前被浏览器保存身份信息
- qq.com收到了带有身份信息的请求,会正常处理
- 这时候的行为就不是我能控制的了,如果那个坏人利用我的身份信息向qq.com发送一个转义物品的请求,那我也没办法的。
上面的例子只是其中之一,还有各种各样的攻击方式,这里简单列举下:
- 访问一个不安全地址,页面包含自动发送的get请求或post请求。
- 链接形式,比如图片,上面可能是各种诱导语。
那我们怎么避免csrf呢?
这就需要我们对症下药,那有哪些明显的症状呢?
- csrf发生在第三方网站
- csrf攻击获取不到cookie信息,只是使用
那我们就可以开发出有疗效的药来治它。
阻止不被允许的第三方域发起请求
同源检测 + samesite cookie类似于签名,要求附带源域产出的一些私密信息
csrf token + 双重cookie验证人工验证
- 同源检测就是说检测来源是否合法,否则禁止请求。不过这种方法相对简单,只能防范常规的csrf攻击。
- samesite cookie的话目前兼容性不是很好,还未普及,samesite cookie本身是用来限制在不同域下的请求时,cookie是否可被携带
- csrf token是生成一个随机的token,注入到各种各样的链接地址或form表单中,利用的是csrf可获取浏览器设置的cookie,但是无法获取html上的随机数。token是一个很有效的方法,除了有点麻烦。
- 双重cookie验证,除了服务端设置的cookie外,每次访问页面还将自动设置一个随机的cookie,然后再请求的时候携带,之后服务端进行url上的cookie和浏览器上的cookie验证。该方法不仅减轻服务端压力,而且后端验证也方便,但是安全性没有token高。
- 人工验证。比如验证码、输入支付密码,这样即使你有cookie也无法攻击,因为还需要进一步信息验证。可以发现,很多网站都会有这一步人工验证的过程。
更多详见:
美团web安全-csrf
xss攻击
什么是xss
xss是是一种代码注入攻击,或者说是一种插入式脚本攻击,攻击者利用对浏览器、服务器、数据库的理解,在网站中插入各种可以和网站相关运行代码组合并可执行的脚本,之后在运行的时候不仅会执行网站本身的代码,还会执行攻击者插入的脚本。
比如获取url上的query进行搜索的搜索框,原来是这样的:
<input type="text" :value="searchWord">
如果攻击者注入这样的代码:
"><script>alert('你被攻击了')</script>
拼接后就会变成这样:
<input type="text" :value=""><script>alert('你被攻击了')</script>">
当浏览器执行的时候,就会弹框。
对于服务端或者数据库同样可以利用类似原理进行攻击。
这样攻击者就可以获取cookie、修改数据库等恶意操作了,非常危险。
常见xss攻击
- 存储式
先存储到服务端,比如数据库,然后吐给浏览器,浏览器执行的时候触发
- 反射性
用户点击的时候触发,比如攻击者构造出特殊的url地址,服务端解析后返回的时候就已经有恶意代码了。
- DOM型
同上,不过是直接就到浏览器了,执行后产生攻击。
相对于前两种,DOM型是浏览器触发的,其他两个是服务端触发的。
药
浏览器和服务端进行适当的代码转义即可防范大部分xss攻击,除此之外,还可以禁止一些不安全的操作,比如加载外域代码,控制内容输入长度,http-only(禁止js操作cookie),验证码等.
还有csp - 内容安全策略
感觉对比上面的csrf攻击,主要区别是:xss是利用用户对网站的信任,csrf是利用网站对用户操作的信任。
更多详见:
美团web安全-xss
sql注入
其实和xss攻击中提及的数据库部分是一样的。
比如有这样一段sql语句:
sql = "select * from users where name=" + name;
name是由用户输入之后生成的,这时候如果直接将name结果拼接:
select * from users where name='' or '1'='1';
这样不仅执行了原本的sql,还执行了攻击者的代码。
解决方法同上。
DDoS攻击
说白了就是过载,玩过炉石应该能具象出一副过载的画面吧~
你当前回合过载了,那你下回合就得休息休息。类比服务端也是一样的。如果处理的事务过多,后面的只能耐心等待(休息)。
药
我们可以限制ip的流量,有钱的话多整点服务也行,嘿嘿~
总结
内容不多,但是尽量有用。
web安全是网站应用诞生的产物,一个攻一个守,本文介绍的只是冰山一角,希望能帮到有需要的人。
最近发现博客园上的图片不会自动转成自己的图床cdn地址,依然使用的外站,导致图片资源403,也是让我挺头疼了,虽然加了meta:
<meta name="referrer" content="never">
但是在部分手机浏览器上还是有问题,再贴一个防盗链文章地址吧。留给自己看~
这篇就到这啦~
拜了个拜~
白话web安全的更多相关文章
- 还能不能愉快地起一个web服务啦?——1st Step!白话http和代码交互的那点儿事儿~
学写python的时候,我们多多少少都接触到了web程序,然而你有没有想过,当浏览器发送了一个http请求时,等待接收这个请求的后端代码是一种什么样的思想感情? 就像下面这张图里画的一样,后端也许是一 ...
- Web Scraping(网页抓取)基本原理 - 白话篇
本文主要介绍 Web Scraping 的基本原理,基于Python语言,大白话,面向可爱的小白(^-^). 易混淆的名称: 很多时候,大家会把,在网上获取Data的代码,统称为"爬虫&qu ...
- 第五篇:白话tornado源码之褪去模板的外衣
上一篇<白话tornado源码之请求来了>介绍了客户端请求在tornado框架中的生命周期,其本质就是利用epoll和socket来获取并处理请求.在上一篇的内容中,我们只是给客户端返回了 ...
- 第三篇:白话tornado源码之请求来了
上一篇<白话tornado源码之待请求阶段>中介绍了tornado框架在客户端请求之前所做的准备(下图1.2部分),本质上就是创建了一个socket服务端,并进行了IP和端口的绑定,但是未 ...
- 第二篇:白话tornado源码之待请求阶段
上篇<白话tornado源码之一个脚本引发的血案>用上帝视角多整个框架做了一个概述,同时也看清了web框架的的本质,下面我们从tornado程序的起始来分析其源码. 概述 上图是torna ...
- 第一篇:白话tornado源码之一个脚本引发的血案
本系列博文计划: 1.剖析基于Python的Web框架Tornado的源码 2.为Python开发一个完善的MVC框架 首先将带着大家一起来剖析基于python编写的Web框架 tornado ,本着 ...
- Web 播放声音 — AMR(Audio) 篇
本文主要介绍 AMR(Aduio) 播放 AMR 格式 Base64码 音频. 1.必备资料 github AMR 开源库 :https://github.com/jpemartins/amr.js用 ...
- Web性能--TCP的构成
前言:阅读<Web性能权威指南>摘录笔记.在这本书开篇就读到第一句话令人印象深刻: "合格的开发者知道怎么做,而优秀的开发者知道为什么那么做". 内容大纲: 1.因特网 ...
- Python之路【第十五篇】WEB框架
WEB框架本质 Python的WEB框架分为两类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理请求 ...
随机推荐
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(6.1)- FlexSPI NOR连接方式大全(RT600)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT600的FlexSPI NOR启动的连接方式. 痞子衡前段时间一鼓作气写完了三篇关于i.MXRT1xxx系列Flex ...
- 超详细,多图文介绍redis集群方式并搭建redis伪集群
超详细,多图文介绍redis集群方式并搭建redis伪集群 超多图文,对新手友好度极好.敲命令的过程中,难免会敲错,但为了截好一张合适的图,一旦出现一点问题,为了好的演示效果,就要从头开始敲.且看且珍 ...
- 适合MCU用的C语言快速互转HEX(16进制)和原始字符串/数组方法
缘由 这个起因是昨晚群里有人在讨论怎么把字符串转成HEX方法最佳,讨论到最后变成哪种方法效率最优了.毕竟这代码是要在MCU上面跑的,要同时考虑到时间和空间的最优解. 当然讨论的是有结果的,具体实现的方 ...
- VUE四 axios详解
axios的中文文档写的已经很详细 https://www.kancloud.cn/yunye/axios/234845
- iOS8 定位失败问题
iOS7升级到iOS8后,百度地图 iOS SDK 中的定位功能不可用,给广大开发者带来了不便,在此向大家分享一个方法来解决次问题.(官方的适配工作还在进行中,不久将会和广大开发者见面) 1.在inf ...
- 无刷新上传图片,ajax 和 iframe
iframe 上传 upload.html 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- CVPR 2020 全部论文 分类汇总和打包下载
CVPR 2020 共收录 1470篇文章,根据当前的公布情况,人工智能学社整理了以下约100篇,分享给读者. 代码开源情况:详见每篇注释,当前共15篇开源.(持续更新中,可关注了解). 算法主要领域 ...
- Python学习字典.基础三
元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中要定义的元组中只有一个元素需要再元素后面加逗号,用来消除数学歧义.例 t=(1,) ...
- 基于linux下的NIST数字测试包安装过程
基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...
- Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
很久没有更新博客了,之前的博客末尾有提到过要写有关EDK2环境搭建的博客,现在就是完成的时候了,后续博客更新会比较规律(大概每周一篇?) 本人博客仅仅发表于博客园,本人主页为 http ...