请谈谈 HTTP 中的安全策略,如何防范常见的Web攻击(如XSS、CSRF)?
一、Web安全核心防御机制
(一)XSS攻击防御(跨站脚本攻击)
1. 原理与分类
- 存储型XSS:恶意脚本被持久化存储在服务端(如数据库)
- 反射型XSS:脚本通过URL参数或表单提交触发执行
- DOM型XSS:通过修改DOM节点动态插入脚本
2. 防御方案
// Express中间件:全局XSS防护
const xss = require('xss');
app.use((req, res, next) => {// 对所有请求参数进行过滤req.cleanedParams = xss(req.params);req.cleanedQuery = xss(req.query);req.cleanedBody = xss(req.body);next();
});// React组件安全渲染示例
function SafeComponent({ userInput }) {// 使用dangerouslySetInnerHTML需谨慎return (<div>{/* 静态内容直接渲染 */}<p>{userInput}</p>{/* 动态内容必须经过转义 */}<div dangerouslySetInnerHTML={{ __html: escapeHtml(userInput) }} /></div>);
}// 自定义转义函数
function escapeHtml(str) {return str.replace(/[&<>"']/g, (match) => ({'&': '&','<': '<','>': '>','"': '"',"'": '''})[match]);
}
(二)CSRF攻击防御(跨站请求伪造)
1. 攻击流程剖析
- 用户登录受信任站点A
- 网站B诱导用户访问包含恶意请求的页面
- 浏览器携带A的Cookie自动发送请求
- 服务端误认为请求合法执行操作
2. 防御策略
// Express CSRF保护配置
const csrf = require('csurf');
const csrfProtection = csrf({ cookie: true });app.use(csrfProtection);// AJAX请求携带CSRF Token示例
fetch('/api/submit', {method: 'POST',headers: {'Content-Type': 'application/json','X-CSRFToken': document.querySelector('meta[name="csrf-token"]').getAttribute('content')},body: JSON.stringify(formData)
});// CSRF Token meta标签配置
<meta name="csrf-token" content="<%= csrfToken %>">
二、进阶防护策略
(一)CORS安全配置
# Nginx CORS安全配置示例
server {location /api {add_header 'Access-Control-Allow-Origin' 'https://trusted-domain.com';add_header 'Access-Control-Allow-Methods' 'GET,POST,PUT,DELETE';add_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-With,Content-Type,Authorization';# 限制预检请求频率limit_req_zone $binary_remote_addr zone=api_limit:10m rate=1r/s;if ($request_method = 'OPTIONS') {add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Length' 0;return 204;}}
}
(二)内容安全策略(CSP)
<!-- HTTP响应头配置 -->
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; object-src 'none'; style-src 'self' 'unsafe-inline';<!-- 内联脚本白名单标记 -->
<script nonce="random-base64-string"></script>
三、日常开发最佳实践
(一)密码安全规范
// 密码哈希存储示例(Node.js)
const bcrypt = require('bcrypt');
const saltRounds = 12;async function hashPassword(password) {// 生成盐值const salt = await bcrypt.genSalt(saltRounds);// 加密密码return await bcrypt.hash(password, salt);
}// 密码验证
async function comparePassword(userPassword, hashedPassword) {return await bcrypt.compare(userPassword, hashedPassword);
}
(二)文件上传安全
# Flask文件上传验证中间件
from werkzeug.utils import secure_filename
import osdef allowed_file(filename):ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS@app.route('/upload', methods=['POST'])
def upload_file():file = request.files['file']if file and allowed_file(file.filename):filename = secure_filename(file.filename)file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))else:return 'Invalid file type', 400
四、实战避坑指南
(一)常见安全漏洞示例
// 不安全的会话管理(前端存储Token)
localStorage.setItem('authToken', response.data.token);// 改进方案:使用HttpOnly Cookie
Set-Cookie: authToken=xyz; HttpOnly; SameSite=Lax
(二)第三方组件审计
# 使用npm audit检查依赖漏洞
npm audit# Snyk监控示例
snyk test
snyk monitor
五、自动化防护体系
(一)WAF配置示例(Nginx)
# ModSecurity规则集配置
location / {modsecurity on;modsecurity_rules_file /etc/modsecurity/owasp-crs/ruleset.xml;# 防御SQL注入SecRule REQUEST_URI|ARGS|REQUEST_BODY "@sql_injection" \"id:900001,\phase:2,\block,\t:none,\log,\msg:'SQL Injection Attack Detected'"
}
(二)监控报警系统集成
// Prometheus + Grafana监控配置
const client = new Prometheus({register: new Registry(),prefix: 'web_security'
});// 记录CSRF攻击尝试
client.gauge('csrf_attempt_count', {label: ['status']
}).inc({ status: 'blocked' });// 设置报警规则
groups: [{name: 'Web Security',rules: [{alert: 'High CSRF Attempt Rate',expr: 'rate(web_security_csrf_attempt_count[5m]) > 10',for: '10m',labels: { severity: 'critical' }}]
}]
六、持续改进措施
(一)渗透测试流程
- 使用Burp Suite进行手动测试
- 配置Acunetix自动扫描
- 定期进行代码审查(重点关注输入验证)
(二)安全培训体系
# 新人安全开发checklist
- [ ] 任何用户输入必须进行过滤/转义
- [ ] 所有API请求必须验证CSRF Token
- [ ] 敏感数据禁止使用LocalStorage存储
- [ ] 文件上传必须包含文件类型验证
- [ ] 密码必须使用bcrypt等强哈希算法
通过建立多层防护体系(从输入验证到监控报警),结合自动化安全工具链,可以有效降低Web应用面临的安全风险。关键是要形成安全开发的肌肉记忆,在每个环节都主动考虑防御措施,而不是依赖后期补救。
相关文章:
请谈谈 HTTP 中的安全策略,如何防范常见的Web攻击(如XSS、CSRF)?
一、Web安全核心防御机制 (一)XSS攻击防御(跨站脚本攻击) 1. 原理与分类 存储型XSS:恶意脚本被持久化存储在服务端(如数据库)反射型XSS:脚本通过URL参数或表单提交触发执行…...
Python Flask 渲染静态程动态页面
Python Flask 渲染静态程动态页面 Python Flask 渲染静态程动态页面 Python Flask 渲染静态程动态页面 对网页应用程序来说,静态内容是重要的,因为它们包括 CSS 和 JavaScript 文件。静态文件可以直接由网页服务器提供。如果我们在我们的项目中创建一个…...
Unity大型游戏开发全流程指南
一、开发流程与核心步骤 1. 项目规划与设计阶段 需求分析 明确游戏类型(MMORPG/开放世界/竞技等)、核心玩法(战斗/建造/社交)、目标平台(PC/移动/主机)示例:MMORPG需规划角色成长树、副本Boss…...
Unity场景制作
一、关于后处理效果 然后可在后处理组件中添加各种效果 ACES : 电影感的强对比效果 添加了ACES后场景明显变暗,所以可以提高曝光度 Post-exposure 二、添加雾效 在Window的项目栏中选择Render中的Lighting 在环境属性中的其他设置中可勾选雾效,为场景中添…...
PCIE接口
PCIE接口 PIC接口介绍PIC总线结构PCI总线特点PCI总线的主要性能PIC的历程 PCIE接口介绍PCIe接口总线位宽PCIE速率GT/s和Gbps区别PCIE带宽计算 PCIE架构PCIe体系结构端到端的差分数据传递PCIe总线的层次结构事务层数据链路层物理层PCIe层级结构及功能框图 PCIe链路初始化PCIe链路…...
Leetcode 3479. Fruits Into Baskets III
Leetcode 3479. Fruits Into Baskets III 1. 解题思路2. 代码实现 题目链接:3479. Fruits Into Baskets III 1. 解题思路 这一题思路本质上就是考察每一个水果被考察时找到第一个满足条件且未被使用的basket。 因此,我们只需要将basket按照其capacit…...
小程序 -- uni-app开发微信小程序环境搭建(HBuilder X+微信开发者工具)
目录 前言 一 软件部分 1. 微信开发者工具 2. HBuilder X 开发工具 二 配置部分 1. 关于 HBuilder X 配置 2. 关于 微信开发工具 配置 三 运行项目 1. 新建项目 2. 代码编写 3. 内置浏览器 编译 4. 配置小程序 AppID获取 注意 四 实现效果 前言 uni-app开发小程…...
深度学习PyTorch之13种模型精度评估公式及调用方法
深度学习pytorch之22种损失函数数学公式和代码定义 深度学习pytorch之19种优化算法(optimizer)解析 深度学习pytorch之4种归一化方法(Normalization)原理公式解析和参数使用 深度学习pytorch之简单方法自定义9类卷积即插即用 实时…...
《云原生监控体系构建实录:从Prometheus到Grafana的观测革命》
PrometheusGrafana部署配置 Prometheus安装 下载Prometheus服务端 Download | PrometheusAn open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach.https://prometheus.io/…...
GHCTF2025--Web
upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…...
NO.32十六届蓝桥杯备战|函数|库函数|自定义函数|实参|形参|传参(C++)
函数是什么 数学中我们其实就⻅过函数的概念,⽐如:⼀次函数 y kx b ,k和b都是常数,给⼀个任意的x ,就得到⼀个 y 值。其实在C/C语⾔中就引⼊了函数(function)的概念,有些翻译为&a…...
计算机视觉算法实战——老虎个体识别(主页有源码)
✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ 1. 领域介绍 老虎个体识别是计算机视觉中的一个重要应用领域,旨在通过分析老虎的独特条纹图案,自动识别和区…...
【移动WEB开发】rem适配布局
目录 1. rem基础 2.媒体查询 2.1 语法规范 2.2 媒体查询rem 2.3 引入资源(理解) 3. less基础 3.1 维护css的弊端 3.2 less介绍 3.3 less变量 3.4 less编译 3.5 less嵌套 3.6 less运算 4. rem适配方案 4.1 rem实际开发 4.2 技术使用 4.3 …...
25年携程校招社招求职能力北森测评材料计算部分:备考要点与误区解析
在求职过程中,能力测评是筛选候选人的重要环节之一。对于携程这样的知名企业,其能力测评中的材料计算部分尤为关键。许多求职者在备考时容易陷入误区,导致在考试中表现不佳。本文将深入解析材料计算部分的实际考察方向,并提供针对…...
【Elasticsearch入门到落地】9、hotel数据结构分析
接上篇《8、RestClient操作索引库-基础介绍及导入demo》 上一篇我们介绍了RestClient的基础,并导入了使用Java语言编写的RestClient程序Demo以及将要分析的数据库。本篇我们就要分析导入的宾馆数据库tb_hotel表结构的具体含义,并分析如何建立其索引库。 …...
现代互联网网络安全与操作系统安全防御概要
现阶段国与国之间不用对方路由器,其实是有道理的,路由器破了,内网非常好攻击,内网共享开放端口也非常多,更容易攻击。还有些内存系统与pe系统自带浏览器都没有javascript脚本功能,也是有道理的,…...
轻量级TCC框架的实现
现有seata、tcc-transaction等tcc框架实现都较为重量级,今天主要带来一种轻量级的实现,大概只用了1200行代码实现。不依赖具体框架grpc、http、dubbo等,只需要业务系统按照标准化实现Try、Commit、Cancel实现接口即可。 已解决悬挂、幂等、空…...
共绘智慧升级,看永洪科技助力由由集团起航智慧征途
在数字化洪流汹涌澎湃的当下,企业如何乘风破浪,把握转型升级的黄金机遇,已成为所有企业必须直面的时代命题。由由集团,作为房地产的领航者,始终以前瞻视野引领变革,坚决拥抱数字化浪潮,携手数字…...
小程序开发总结
今年第一次帮别人做小程序。 从开始动手到完成上线,一共耗时两天。AI 让写代码变得简单、高效。 不过,小程序和 Flutter 等大厂开发框架差距实在太大,导致我一开始根本找不到感觉。 第一,IDE 不好用,各种功能杂糅在…...
元脑服务器:浪潮信息引领AI基础设施的创新与发展
根据国际著名研究机构GlobalData于2月19日发布的最新报告,浪潮信息在全球数据中心领域的竞争力评估中表现出色,凭借其在算力算法、开放加速计算和液冷技术等方面的创新,获得了“Leader”评级。在创新、增长力与稳健性两个主要维度上ÿ…...
LLM API安全攻防实战:从提示词注入到自动化测试方案
1. 项目概述:被忽视的LLM API安全前线最近在帮几个团队做上线前的安全审计,发现一个挺有意思的现象:大家对于传统API的鉴权、限流、SQL注入这些常规检查已经形成了肌肉记忆,但一旦涉及到LLM(大语言模型)的A…...
IPFS去中心化存储实战指南:黑马程序员音乐播放器项目开发完整教程
IPFS去中心化存储实战指南:黑马程序员音乐播放器项目开发完整教程 【免费下载链接】BlockChain 黑马程序员 120天全栈区块链开发 开源教程 项目地址: https://gitcode.com/gh_mirrors/blockchain95/BlockChain 你是否想过如何构建一个真正去中心化的音乐播放…...
癫痫手术精准定位:基于脑电信号昼夜节律与多生物标志物的机器学习分析框架
1. 项目概述:当机器学习遇见脑电信号,如何让癫痫手术更精准?作为一名长期耕耘在生物医学信号处理与机器学习交叉领域的工程师,我常常思考如何将算法模型从实验室的“玩具”变成临床医生手中可靠的“手术刀”。癫痫,这个…...
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳
D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 你是否曾在《暗黑破坏…...
MySQL GROUP BY 原理与优化
我刚工作的时候,有次统计每个用户的订单总金额,写了 SELECT user_id, SUM(amount) FROM orders GROUP BY user_id,结果执行了 60 秒还没出结果。DBA 帮我一看执行计划,发现没走索引,导致 Using temporary(用…...
翻译 GDB 官方文档
翻译 GDB 官方文档项目地址官方文档地址下载源码包编译html运行翻译程序项目地址 https://github.com/shootercheng/gdb-translate.git 项目结构 $ tree -L 1 . ├── cmd ├── go.mod ├── input ├── internal ├── LICENSE ├── output ├── README.md ├─…...
Autodesk Fusion 360在Linux上的技术实现与性能优化深度解析
Autodesk Fusion 360在Linux上的技术实现与性能优化深度解析 【免费下载链接】Autodesk-Fusion-360-for-Linux This is a project, where I give you a way to use Autodesk Fusion 360 on Linux! 项目地址: https://gitcode.com/gh_mirrors/au/Autodesk-Fusion-360-for-Linu…...
YOLOv8道路交通信号标志识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)
摘要 道路交通信号标志的自动检测是智能驾驶与交通管理系统中的核心环节。本文基于YOLOv8目标检测算法,构建了一个涵盖21类常见交通信号标志的检测系统,包括禁令标志、指示标志、警告标志及信号灯等。模型在包含1376张训练图像、488张验证图像和229张测…...
压测不只是加并发:我们模拟真实用户行为后,发现了隐藏瓶颈
在性能测试领域,一个根深蒂固的误解是:压测就是使劲加线程数,看系统什么时候崩。很多团队用 JMeter 起 500 个并发,照着接口列表跑一圈,看到 TPS 平稳、响应时间没超过 300ms,就觉得万事大吉。可一旦上线&a…...
网盘下载速度太慢?这款直链解析工具让你下载效率提升250%!
网盘下载速度太慢?这款直链解析工具让你下载效率提升250%! 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…...
