1. 跨站脚本攻击 (XSS)
- 了解XSS攻击的类型(存储型、反射型和DOM型)。
- 存储型:将恶意脚本存储在服务器端的数据库中。受害者访问页面时,服务器将恶意脚本加载到页面中,用户无意中执行了该脚本。比如说用户留言。
- 反射型 XSS:反射型XSS通过构造特定的URL将恶意代码放在请求参数中,服务器接收到请求后将参数直接反射回页面。恶意脚本立即在用户的浏览器中执行。比如搜索功能中反射恶意脚本。
- DOM型 XSS(DOM-based XSS):DOM型XSS的攻击不需要通过服务器,而是在浏览器端操作DOM对象。恶意脚本通过JavaScript直接操作页面的DOM节点,从而执行攻击代码。
- 掌握防范措施,如在输出内容时进行编码(HTML、JavaScript、CSS编码),避免在页面中直接插入用户输入的数据。
- 使用内容安全策略(CSP)来防止未授权脚本执行。
2. 跨站请求伪造 (CSRF)
- 了解CSRF的攻击机制,理解为何同源策略无法完全防御CSRF。
- 学习常用的防御措施,如使用CSRF令牌(token)、验证请求来源(例如Referer Header)等。
- 通过SameSite Cookie属性,限制跨站Cookie的使用范围。
3. 内容安全策略 (CSP)
- 内容安全策略(CSP,Content Security Policy)是一种安全机制,旨在帮助防范XSS(跨站脚本攻击)、点击劫持、数据注入等多种攻击。它通过设置一系列规则,限制页面可以加载的资源(如脚本、样式、图片、字体等)来源,确保只有可信的内容能够在页面中执行。
- 理解并配置CSP,以防止XSS和数据注入等攻击。
- 学习如何编写CSP规则,限制资源加载的来源,防止外部恶意代码注入。
- DEMO
- 允许资源只从与当前页面相同的域加载:
Content-Security-Policy: default-src 'self'; - 允许特定来源的脚本和样式
Content-Security-Policy: script-src 'self' https://trustedscripts.com; style-src 'self' https://trustedstyles.com;
- 允许资源只从与当前页面相同的域加载:
4. 同源策略 (SOP) 和跨域资源共享 (CORS)
- 理解SOP的工作原理及其对Web应用安全的重要性。
- 学习配置CORS头部信息,确保跨域请求的安全性,避免滥用跨域资源。
5. HTTP安全头
- 掌握常用的HTTP安全头设置,包括X-Content-Type-Options、X-Frame-Options、Strict-Transport-Security (HSTS)等。
- 了解这些头部如何防止内容混淆、点击劫持和中间人攻击。
6. 点击劫持(Clickjacking)
- 了解点击劫持的危害及常见攻击方式。
- 使用X-Frame-Options头部或Content Security Policy中的frame-ancestors限制页面嵌入。
7. 认证和授权
- 理解认证和授权的区别及其对Web安全的影响。
- 学习JWT(JSON Web Token)在认证中的应用,并注意JWT的存储安全性(如使用HttpOnly和Secure Cookie)。
8. 输入验证和输出编码
- 确保前端对用户输入进行基本的格式验证(客户端验证)。
- 后端仍应承担主要的验证职责,前端验证只是增加用户体验的手段。
9. 文件上传安全
- 理解文件上传的安全风险,如执行文件、恶意文件扩展名伪装等。
- 确保文件上传后的文件类型验证、重命名、存储路径管理。
10. 数据加密
- 在客户端和服务器之间传输敏感信息时使用HTTPS。
- 在必要时对敏感数据(如用户密码、身份标识符等)进行加密处理。
11. 依赖项的安全性管理
- 学会定期审查和更新第三方依赖项,确保依赖库不存在已知漏洞。
- 使用工具(如npm audit、OWASP Dependency-Check)检查依赖项的安全风险。
12. 漏洞检测工具
- 掌握常用的安全检测工具,如SonarQube、Burp Suite等,进行自动化和手动的安全审查。
- 关注Web应用安全漏洞清单(如OWASP Top 10),了解常见漏洞类型及防护方法。