Web安全
2020-12-01 14:46:03 2 举报
AI智能生成
web安全
作者其他创作
大纲/内容
性质
私密性:不被非法获取和利用
可靠性:不丢失不损坏不被篡改
安全层面
代码层面
架构层面
运维层面
思考
了解安全问题的原因
避免开发出带漏洞的代码
如何开发安全的Web项目
安全问题
用户身份被盗用
用户密码泄露
用户资料被盗取
网站数据库泄露
其他
常见安全问题
跨站脚本攻击XSS
跨站请求伪造攻击CSRF
前端Cookies安全性
点击劫持攻击
传输过程安全问题
用户密码安全问题
SQL注入攻击
信息泄露和社会工程学
重放攻击
其他安全问题
Web安全的重要性
直面用户挑战严峻
网站和用户安全是生命线
安全事故威胁企业生产、口碑甚至生存
总结
XSS
简述XSS的原理
简述XSS的防御方法
XSS防御需要注意的点
CSRF
CSRF的原理
CSRF的危害
CSRF如何进行防御
Cookie
Cookies的作用
Cookies和Session的关系
Cookies的特征
如何删除一个Cookie的值
HTTPS
HTTPS是如何保证数据不被窃听
HTTPS是如何保证不被中间人攻击的
部署HTTPS的步骤
SQL注入
SQL注入的原理
SQL注入的危害
文件上传
文件上传漏洞的原理
如何防范文件上传漏洞
存储
如何设计用户密码存储
如何设计登录过程
如何保证用户密码不被窃听
XSS
Cross Site Script (跨站脚本攻击)
攻击原理
程序 + 数据 = 结果
攻击危害
获取页面数据
获取Cookies
发送请求
劫持前端逻辑
偷取网站任意数据
偷取用户资料
欺骗用户
偷取用户密码和登录态
攻击分类
反射型 (url参数直接注入) (可以通过短网址隐蔽)
存储型 (存储到DB后读取时注入)
攻击注入点
HTML节点内容
HTML属性
JavaScript代码
富文本
富文本得保留HTML
HTML有XSS风险
现代浏览器的防御
X-XSS-Protection
0: 关闭
1(默认): 打开
在1后可以指定url: 遭到攻击时可以向url发送通知
防御范围
反射型XSS
参数出现在HTML内容或属性
不能防御JavaScript
浏览器XSS防御有限不可依赖
防御
HTML节点内容
转义< < 和 > >
HTML属性
HTML5之前 & 转义 & &符号转义只能放到最前面否则之后的转义会被再次转义
转义 " &quto;
转义 ' '(IE不支持) 实体编号 '
转义 space 实体编号  
不转义 space 属性要加上 ""
JavaScript
转义 "\" 或者转换成json
\\ 转义 \\\\ 放再最前否则之后会被再次转义
" 转义 \\"
最好就是 JSON encode, JavaScript 中为 JSON.stringify()
富文本
黑名单过滤
通过正则去掉script标签 onerror属性
黑名单过滤方便但是变种太多容易绕过
白名单过滤
按白名单保留部分标签和属性只有允许的标签和属性才可以
白名单比较彻底但是编写麻烦并且规定不好也会有风险
https://github.com/leizongmin/js-xss
CSP
Content Security Policy (内容安全策略)
用于指定哪些内容可执行
HTTP头
child-src connect-src default-src
font-src frame-src img-src
manifest-src media-src object-src
script-src style-src worker-src
<host-source> <scheme-source> 'self'
'unsafe-inline' 'unsafe-eval' 'none'
'nonce-<base64-value>' <hash-source>
'strict-dynamic'
PHP防御XSS
内置函数转义
DOM解析白名单
第三方库
CSP
CSRF
Cross Site Request Forgy (跨站请求伪造)
攻击原理
用户登录A网站
A网站确认身份
B网站界面向A网站发起请求(带A网站身份)
攻击危害
利用用户登录态
用户不知情
完成业务请求
盗取用户资金(转账、消费)
冒充用户发帖背锅
损坏网站声誉
攻击防御
特点
B网站向A网站请求
带A网站Cookies
禁止第三方网站带Cookies
same-site属性(兼容还比较少)
不访问A网站前端
在前端界面加入验证信息
验证码
token
referer为B网站
验证referer
禁止来自第三方网站的请求
PHP防御CSRF
Cookie samesite属性
HTTP referer头
token
Cookie
特性
前端数据存储
后端通过HTTP头设置
请求时通过HTTP头传给后端
前端可读写
遵守同源策略
域名
有效期
路径
http-only
secure
same-site
作用
存储个性化设置
存储未登陆时用户唯一标识
存储已登录用户的凭证
存储其他业务数据
登录用户凭证
前端提交用户名和密码
后端验证用户名和密码
后端通过http头设置用户凭证
后续访问时后端先验证用户凭证
用户ID(可能会被篡改)
用户ID + 签名
SessionID
和XSS的关系
XSS可能偷取Cookies
http-only的Cookie不会被偷
和CSRF的关系
CSRF利用了用户Cookies
攻击站点无法读写Cookies
最好能阻止第三方使用Cookies
安全策略
签名防篡改
私有变换(加密)
http-only(防止XSS)
secure
same-site
前端点击劫持
特征
用户亲手造作
用户不知情
危害
盗取用户资金(转账、消费)
获取用户敏感信息
防御
JavaScript禁止内嵌 (top.location == window.location) (防不住sandbox="allow-forms")
X-FRAME-OPTIONS 禁止内嵌
DENY(禁止内嵌)
SAME-ORIGIN(同一个网站)
SAMEORIGIN(iframe的嵌入页和被嵌入页在同一个页下才可以使用)
ALLOW-FROM(只允许指定的网站内嵌)
其他辅助手段
加大用户操作难度(例如验证码)
传输安全
HTTP传输窃听
浏览器->代理服务器->链路->服务器 (传输链路窃听篡改)
窃听用户密码
窃听传输敏感信息
非法获取个人资料
HTTP篡改
插入广告
重定向网站
无法防御的XSS和CSRF攻击
HTTPS
浏览器->代理服务器->链路->服务器 (TLS (SSL) 加密)
中间人攻击
浏览器(加密)->中间人(加密)->服务器
如何确定服务器身份
0.浏览器->CA (内置信任列表)
1.服务器->CA(申请证书)
2.CA->服务器(验证域名、颁发证书)
3.浏览器->服务器(发起请求)
4.服务器->浏览器(出具证书)
5.浏览器->服务器(验证通过)
证书无法伪造
证书私钥不被泄露
域名管理权不泄露
CA坚守原则
密码安全
密码的作用
"证明你是你"
原理
存储的密码(对比)<->(对比)输入的密码
密码的存储
泄露渠道
数据库被偷
服务器被入侵
通讯被窃听
内部人员泄露数据
其他网站(撞库)
存储
严禁明文存储(防泄露)
单向变换(防泄露)
变换复杂度要求(防猜解)
密码复杂度要求(防猜解)
加盐(防猜解)
哈希算法
明文-密文 一一对应
雪崩效应
密文-明文 无法反推
密文固定长度
常见哈希算法: md5 sha1 sha256
md5 单向变换
单向变换彩虹表
帮助用户加强复杂度
变换次数越多越安全
加密成本几乎不变(生成密码时速度慢一些)
彩虹表失效(数量太大,无法建立通用性)
解密成本增大N倍
明文存储安全隐患大
密码的传输
密码传输的安全性
https传输
频率限制
前端加密意义有限
密码的替代方案
生物特征密码
指纹(唇纹)
声纹
虹膜
人脸
生物特征密码的问题
私密性-容易泄露
安全性-碰撞
唯一性-终身唯一 无法修改
接入层注入问题
关系型数据库
存放结构化数据
可高效操作大量数据
方便处理数据之间的关联关系
常见: access / sqlite / mysql / mssql server
SQL语言
select * from table where id = 1
标准化
类似自然语言的描述性语言
用于关系型数据库
可完成增、删、改、查以及各种复杂的数据库操作
SQL注入
危害
猜解密码
获取数据
删库删表
拖库
防御
关闭错误输出
检查数据类型
对数据进行转义
使用参数化查询
使用ORM(对象关系映射)
NoSQL注入和防御
检查数据类型
类型转换
写完整条件
接入层上传问题
上传问题
上传文件
再次访问上传的文件
上传的文件被当成程序解析
上传问题防御
限制上传后缀
文件类型检查
文件内容检查
程序输出
权限控制-可写可执行互斥
社会工程学和信息泄露
信息泄露
泄露系统敏感信息
泄露用户敏感信息
泄露用户密码
信息泄露的途径
错误信息失控
SQL注入
水平权限控制不当
XSS/CSRF
社会工程学
你的身份有你掌握的资料确定
别人掌握了你的资料
别人伪装成你的身份
利用你的身份干坏事
案例
电信诈骗
伪装公检法
QQ视频借钱
微信伪装好友
OAuth思想
一切行为由用户授权
授权行为不泄露敏感信息
授权会过期
利用OAuth思想防止资料泄露
用户授权读取资料
无授权的资料不可读取
不允许批量获取数据
数据接口可风控审计
其他安全问题
DOS攻击
拒绝服务攻击DOS
模拟正常用户
大量占用服务器资源
无法服务正常用户
TCP半连接
HTTP连接
DNS
大规模分布式拒绝服务攻击DDOS
流量可达几十到上百G
分布式(肉鸡、代理)
极难防御
DOS攻击案例
2009年5月19日
全国多省市断网
游戏s私服互相DDOS
换目标,攻击DNS服务器
DNS服务器机器下线
数十万w网站DNS解析瘫痪
XX影音后台疯狂请求解析
各地local DNS瘫痪 无法上网
DOS攻击防御
防火墙
交换机、路由器
流量清洗
高防IP
DOS攻击预防
避免重逻辑业务
快速失败快速返回
防雪崩机制
有损服务
CDN
重放攻击
特点
请求被窃听或记录
再次发起相同的请求
产生意外的结果
后果
用户登录态被盗取
用户被多次消费
多次抽奖
防御
加密(HTTPS)
时间戳
token(session)
nonce
签名
收藏
0 条评论
下一页