Web开发的安全之旅 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第5天
Web开发安全在前端开发是一个很重要的部分,让我们来学习了解一下吧
问题
关于Web安全问题很常见,那都会危害到什么?
- 用户
- 公司
- 程序员
可以从哪两个角度看Web安全?
- 假如你是一个hacker--攻击
- 假如你是一个开发者--防御
攻击篇
Cross-Site Scritpting(XSS)
<script>alert("xss");</script>
XSS 主要利用了
盲目信任用户的提交内容
string->DOM -document.write -element.innerHTML = anyString; -SSR(user_data) //伪代码
XSS的一些特点
- 通常难以从UI上感知(暗地执行脚本)
- 窃取用户信息(cookie/token)
- 绘制UI(例如弹窗),诱骗用户点击/填写表单
Stored XSS
Stored XSS
- 恶意脚本被存在数据集中
- 访问页面->读数据==被攻击
- 危害最大,对全部用户可见
Reflected XSS
Reflected
- 不涉及数据库
- 从URL上攻击
DOM-based XSS
DOM-based XSS
- 不需要服务器的参与
- 恶意攻击的发起+执行,全在浏览器完成
Mutation-based XSS
Mutation-based XSS
- 利用了浏览器渲染DOM的特性(独特优化)
- 不同浏览器,会有区别 (按浏览器进行攻击)
Cross-site request forgery(CSRF)
- 在用户不知情的前提下
- 利用用户权限(cookie)
- 构造指定HTTP请求,窃取或修改用户敏感信息
CSRF demo
①用户没有访问银行页面
②银行页面中的特定接口被请求
③请求执行成功
SQL injection
请求 SQL参数(恶意注入)->Server 参数->SQL 运行SQL code ->获取其他信息、修改数据、删除数据
injection不至于SQL
- CLI
- OS command
- Server-Side Requset Forgery(SSRF),服务端伪造请求
- 严格而言,SSRF不是injection,但是原理类似
Denial of Service(DoS)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及相应更多请求,导致请求挤压,进而雪崩效应。
防御篇
XSS--现成工具
前端
- 主流框架默认防御XSS
- google -closure-library 服务端(Node)
- DOMPurify
CSRF的防御
if 伪造请求==异常来源 then限制请求来源->限制伪造请求
请求头部
- Origin
- 同源请求中,GET+HEAD不发送
- Referer
Samesite VS CORS
Samesite
- Cookie 发送
- domain VS 页面域名
- “我跟你说个事儿,出这屋我可就不认了”
CORS
- 资源读写(HTTP请求)
- 资源域名 VS 页面域名
- 白名单
Injection
- 找到项目中查询SQL的地方
- 使用prepared statement
Injection beyond SQL
最小权限原则
- sudo || root
建立允许名单 + 过滤
- rm
对URL类型参数进行协议、域名、ip等限制
- 访问内网
Regex Dos
- code Review(X/(ab*)+/)
- 代码扫描 + 正规性能测试
- X用户提供的使用正则
Logical DoS
不是非黑即白
- 有些case,只有在请求量达到一定之后,才会体现
分析代码中的性能瓶颈
- 同步调用
- 串行逻辑
- CPU密集型操作
限流
DDoS
流量治理
- 负载均衡
- API网关
- CDN
快速自动扩容
非核心服务降级
SRI--demo
标签hash(原始内容hash) vs 实际内容hash
<script src="http://example/app.js"
integrity="sha384-{some-hash-value}"
crossorigin="anonymous"></script>
//伪代码
const remoteHash = hash(content);
if(tagHash !== remoteHash){
throw new Error("wrong hash");
}
总结
有了今天的学习,对于Web开发安全有了更多的认识,也了解了安全的重要性
还有就是安全无小事,我们要学好Web有关的安全知识,还有就是保持良好的学习心态,一步一步走下去。
如果你有任何建议都可以在评论区留言,或发电子邮箱,欢迎大家评论留言(ˆ⌣ˆ)
作者:Yifan
日期:2022年7月24日
电子邮箱:1279640748@qq.com