[ Web开发安全| 青训营笔记]

98 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天

网络安全出现问题,会造成很多危害。比如用户信息泄露、公司利益受损,还可能导致程序员祭天。因此,作为开发者,对web开发安全必须要有清晰的认识,在开发阶段就规避掉大部分的安全隐患。使上线后不会被攻击的焦头烂额。

web安全之攻击篇

Cross-site Scripting (XSS)

没有将用户提交的内容进行转义或过滤,直接将用户提交内容转化为DOM,这样就会导致XSS攻击。如果提交的内容植入一些恶性脚本,这些脚本有可能会诱导用户点击,给用户造成损失。还很有可能提取到其他用户的token或cookie导致用户信息被窃取。

Cross-site request forgery (CSRF)

在用户不知情的情况下,拿到用户的cookie,利用该用户的权限构造指定的HTTP请求,窃取或修改用户敏感信息。

SQL Injection(SQL注入)

在提交的表单中,写入恶性SQL脚本。如果没做好防护,有可能导致即使没有输入正确的用户名和密码也可以进入应用页面,更严重的是还有可能传入的脚本是删除所有数据表,直接导致被动删库跑路。除了SQL注入之外还有CLI注入,OS command注入等。

DDos

直接多次访问IP,多次调用API,消耗了服务器大量的带宽,导致服务器直接崩掉。

web安全之防御篇

XSS防御

解决方法 1.永远不要相信用户提交的任何内容

2.不要将用户提交的内容转化为dom 常用工具 前端:主流框架默认防御XSS。google-closure-library 服务端: Dom-purify

CSRF防御

如果发现请求的来源有异常,就对这个来源的请求进行限制,从而达到限制伪造请求。node中可以通过在中间件最外层加入CSRF防御中间件,直接把这些异常请求过滤掉就行了。

SQL注入防御

找到项目中查询SQL的地方,使用prepared statement

DDos防御

使用负载均衡和API网关来对流量进行治理,使用快速自动拓容,非核心服务降级来提升服务器的抗量。