💣深入Web安全(防御篇)

简介: 💣深入Web安全(防御篇)

前言


随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要前端技术人员不断进行“查漏补缺”,上篇介绍的是攻击篇,这篇我们来讲讲如何防御这些攻击~


一、XSS攻击的防御


XSS攻击防御的理念就是永远不要相信用户!永远不要相信用户!


  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成DOM


image.png


1.1 防御XSS攻击的现成工具


前端:


  • 主流框架默认防御XSS
  • google-closure-library 服务端(Node):
  • DOMPurify


1.2 需要动态生成DOM


将string转化成DOM


可以使用new DOMParser()API,这种时候一定要对string进行过滤


上传SVG


SVG中可以内嵌script标签,会导致在这段SVG在浏览器加载的时候完成XSS攻击,因此对用户上传的SVG文件也要进行过滤。


<svg>
    <script>alert("xss");</script>
</svg>
复制代码


自定义跳转链接


如果允许用户自定义跳转链接的话一定要过滤。


<a href="javascript:alert('xss')"></a>
复制代码


自定义样式


尽量不要允许用户自定义样式。

image.png


1.3 Content Security Policy(CSP)


  • 哪些源(域名)被认为是安全的
  • 来自安全源的脚本可以执行,否则直接抛错
  • 对eval + inline script 说🙅‍


如何配置


服务器的响应头部:


Content-Security-Policy: script-src 'self' 同源
Content-Security-Pplicy: script-src 'self' https://domain.com
复制代码


浏览器meta:


<meta http-equiv="Content-Security-Policy" content="script-src self">
复制代码


二、CSRF的防御


我们知道在CSRF中,请求是伪造的,也就是它所有的请求来源都是异常的,不是真正的域名,那我们四不是可以限制请求来源从而达到限制伪造请求的目的呢,答案是可以的。

image.png



2.1 token


image.png


2.2 限制iframe攻击


image.png


2.3 避免用户信息被携带:SameSite Cookie


image.png

image.png


2.4 防御CSRF的正确姿势


如果对每一个接口都做CSRF防御,那些太累了,又或者说,不够优雅,应该在中间件中统一处理CSRF的防御工作。


image.png


三、SQL注入的防御


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


image.png


四、其他注入的防御


image.png


五、防御DDoS


image.png


六、防御中间人


https的介入

image.png


HTTPS的一些特性


  • 可靠性:加密


image.png


  • 完整性:MAC验证


image.png


  • 不可抵赖性:数字签名


image.png


HTTP Strict-Transport-Security(HSTS)


image.png


Subresource Integrity(SRI)


对比一个静态文件的hash值是否被篡改


image.png


最后


⚽到这,我们Web安全的防御篇也就已经介绍完啦,我们要清楚安全无小事,要时刻注意网络安全问题,保持学习心态~

⚾如果你对这篇文章感兴趣欢迎点赞关注+收藏,更多精彩知识正在等你!😘

相关文章
|
23天前
|
安全 Ubuntu 应用服务中间件
Web服务器安全最佳实践
【8月更文第28天】随着互联网的发展,Web服务器成为了企业和组织的重要组成部分。然而,这也使得它们成为黑客和恶意软件的目标。为了确保数据的安全性和系统的稳定性,采取适当的安全措施至关重要。本文将探讨一系列保护Web服务器的最佳策略和技术,并提供一些实用的代码示例。
44 1
|
7天前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
27 6
|
8天前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
14 5
|
20天前
|
安全 关系型数据库 数据库
FastAPI数据库操作秘籍:如何通过高效且安全的数据库访问策略,使你的Web应用飞速运转并保持数据完整性?
【8月更文挑战第31天】在构建现代Web应用时,数据库操作至关重要。FastAPI不仅简化了API创建,还提供了高效数据库交互的方法。本文探讨如何在FastAPI中实现快速、安全的数据处理。FastAPI支持多种数据库,如SQLite、PostgreSQL和MySQL;选择合适的数据库可显著提升性能。通过安装相应驱动并配置连接参数,结合ORM库(如Tortoise-ORM或SQLAlchemy),可以简化数据库操作。使用索引、批量操作及异步处理等最佳实践可进一步提高效率。同时,确保使用参数化查询防止SQL注入,并从环境变量中读取敏感信息以增强安全性。
39 1
|
9天前
|
存储 安全 JavaScript
Web安全-XSS漏洞
Web安全-XSS漏洞
11 0
|
20天前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
29 0
|
20天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
32 0
|
20天前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
42 0
|
20天前
|
存储 SQL 安全
【绝密攻略】Flask应用如何抵御黑客入侵?七大安全技巧助你构建固若金汤的Web防线!
【8月更文挑战第31天】安全性是Web应用开发中的关键部分。Flask作为一款轻量级且高度可定制的框架,虽灵活但需开发者确保应用安全。本文介绍如何通过具体措施加固Flask应用,包括更新依赖项、启用CSRF保护、使用HTTPS、安全存储密码、防止SQL注入及清理用户输入等。通过示例代码展示如何在实际开发中应用这些策略,帮助提升应用安全性,为用户提供更可靠的服务。
41 0
|
20天前
|
SQL 安全 算法
【惊险揭秘】Django高手的十大安全秘籍:如何从零构建坚不可摧的Web堡垒?
【8月更文挑战第31天】《Django安全性指南:构建安全Web应用的十大关键步骤》介绍了在使用Django框架开发Web应用时,如何通过十个关键步骤提升应用安全性。从使用HTTPS、设置CSRF保护到限制密码复杂度、防止SQL注入,文章详细阐述了每一步的具体实施方法及示例代码,帮助开发者构建更加安全可靠的Web应用。
12 0