Web常见攻击方式及防御措施

一、常见Web攻击方式

1. 跨站脚本攻击(XSS)

攻击原理:攻击者向网页注入恶意脚本,在用户浏览器执行

  • 存储型XSS:恶意脚本存储在服务器(如评论区)

  • 反射型XSS:恶意脚本通过URL参数反射给用户

  • DOM型XSS:前端JavaScript不安全地操作DOM

2. 跨站请求伪造(CSRF)

攻击原理:诱骗用户在已认证的网站上执行非预期操作

  • 利用用户的登录状态

  • 通过恶意链接/图片发起请求

3. SQL注入

攻击原理:通过输入数据插入或"注入"恶意SQL命令

  • 攻击者可以查看、修改、删除数据库内容

  • 常见于未过滤的用户输入拼接SQL语句

4. 点击劫持(Clickjacking)

攻击原理:诱使用户点击隐藏的恶意元素

  • 使用透明iframe覆盖合法页面

  • 用户看似点击安全内容,实则触发恶意操作

5. 文件上传漏洞

攻击原理:上传恶意文件到服务器

  • 上传可执行脚本获取服务器权限

  • 上传超大文件导致DoS(Denial of Service(拒绝服务))

6. 分布式拒绝服务(DDoS)

攻击原理:用大量请求淹没服务器资源

  • 消耗带宽、CPU或内存资源

  • 使合法用户无法访问服务

7. 中间人攻击(MITM)

攻击原理:拦截通信双方的流量

  • 公共WiFi常见风险

  • 窃取敏感信息如登录凭证

二、防御措施

1. XSS防御

  • 输入过滤:对用户输入进行转义和验证

function escapeHtml(str) {return str.replace(/[&<>'"]/g, tag => ({'&': '&amp;','<': '&lt;','>': '&gt;',"'": '&#39;','"': '&quot;'}[tag]));
}
  • 输出编码:根据输出上下文(HTML/JS/URL)进行编码

  • Content Security Policy (CSP):限制脚本来源

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

HttpOnly Cookie:防止JavaScript访问敏感Cookie

//http
Set-Cookie: sessionid=xxxx; HttpOnly; Secure

2. CSRF防御

  • CSRF Token:表单中包含服务器验证的令牌

<input type="hidden" name="_csrf" value="随机令牌">

SameSite Cookie属性

//http
Set-Cookie: sessionid=xxxx; SameSite=Strict
  • 验证Referer/Origin头:检查请求来源

  • 关键操作二次验证:如短信/邮件确认

3. SQL注入防御

  • 参数化查询/预处理语句

// 正确方式
db.query('SELECT * FROM users WHERE id = ?', [userId]);// 错误方式(易受攻击)
db.query(`SELECT * FROM users WHERE id = ${userId}`);
  • ORM框架:使用Sequelize、TypeORM等

  • 最小权限原则:数据库用户仅赋予必要权限

  • 输入验证:白名单验证输入格式

4. 点击劫持防御

  • X-Frame-Options头

//http
X-Frame-Options: DENY

CSP的frame-ancestors指令: 

//http
Content-Security-Policy: frame-ancestors 'none'

 JavaScript防御(后备方案):

if (top !== self) top.location = self.location;

 

5. 文件上传防御

  • 文件类型验证:检查MIME类型和扩展名

  • 文件内容扫描:检查实际内容而非仅扩展名

  • 重命名文件:使用随机生成的文件名

  • 隔离存储:上传目录不解析脚本

  • 大小限制:防止超大文件攻击

6. DDoS防御

  • CDN服务:分散流量压力

  • 速率限制(Rate Limiting)

// Express中间件示例
const rateLimit = require('express-rate-limit');
app.use(rateLimit({ windowMs: 15*60*1000, max: 100 }));

 

  • Web应用防火墙(WAF):过滤恶意流量

  • 云防护服务:如Cloudflare、AWS Shield

7. 中间人攻击防御

  • HTTPS强制:HSTS头

//http
Strict-Transport-Security: max-age=31536000; includeSubDomains
  • 证书钉扎(HPKP):固定可信证书

  • 敏感操作二次验证:即使会话被劫持

三、综合安全建议

通过组合这些措施,可以显著提高Web应用的安全性,但需注意安全是一个持续过程而非一次性任务。

  1. 保持更新:定期更新框架、库和服务器软件

  2. 最小权限原则:所有服务使用最低必要权限运行

  3. 深度防御:多层安全措施而非依赖单一防护

  4. 安全头设置

    //http
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block

  5. 日志监控:记录并分析异常访问模式

  6. 定期渗透测试:主动发现漏洞

  7. 安全意识培训:防范社会工程学攻击

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/902674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CGAL 网格内部生成随机点

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里实现一种基于点的射线法来判断一个点是否一个多面提的内部,通过不停的生成随机点,以达到我们想要的效果,思路其实相对简单,但是很实用。具体内容如下: 1. 首先,我们需要构建随机方向的射线(半无限射线)…

tigase源码学习杂记-组件化设计

前言 tigase官方号称高度抽象和组件化。这篇文章就记录一下我研究组件化的相关设计 概述 我的理解tigase高度组件化是所有的关键的功能的类&#xff0c;它都称之为组件&#xff0c;即只要继承于BasicComponent&#xff0c;它都可以成为组件&#xff0c;BasicComponent类实现…

【Redis】 Redis中常见的数据类型(二)

文章目录 前言一、 List 列表1. List 列表简介2.命令3. 阻塞版本命令4. 内部编码5. 使用场景 二、Set 集合1. Set简单介绍2. 普通命令3 . 集合间操作4. 内部编码5. 使用场景 三、Zset 有序集合1.Zset 有序集合简介2. 普通命令3. 集合间操作4. 内部编码5. 使用场景 结语 前言 在…

OpenAI为何觊觎Chrome?AI时代浏览器争夺战背后的深层逻辑

目录 引言&#xff1a;一场蓄谋已久的"蛇吞象"计划 一、Chrome&#xff1a;数字世界的"黄金入口" 1.1 用户规模对比&#xff1a;ChatGPT与Chrome的悬殊差距 1.2 Chrome的生态价值远超浏览器本身 二、OpenAI的"入口焦虑"与战略布局 2.1 AI时…

二分小专题

P1102 A-B 数对 P1102 A-B 数对 暴力枚举还是很好做的&#xff0c;直接上双层循环OK 二分思路:查找边界情况&#xff0c;找出最大下标和最小下标&#xff0c;两者相减1即为答案所求 废话不多说&#xff0c;上代码 //暴力O(n^3) 72pts // #include<bits/stdc.h> // usin…

java延迟map, 自定义延迟map, 过期清理map,map能力扩展。如何设置map数据过期,改造map适配数据过期

1. 功能&#xff1a; map 线程安全&#xff0c;能够对存入的数据设置过期&#xff0c;或者自定义删除 2. aliyun代码看到的一个对象正好符合上述需求 出处是aliyun sdk core jar包的一个类。感兴趣可以去下载下jar查看 下面是源码&#xff1a; package com.aliyuncs.policy.…

国芯思辰|可编程线性霍尔传感器AH820替换HAL825用于汽车涡轮增压

涡轮增压技术是提高发动机的进气能力的技术&#xff0c;霍尔传感器可以达到监测涡轮转速的作用。在涡轮增压器的轴上安装一个永磁体&#xff0c;当涡轮旋转时&#xff0c;永磁体也随之转动&#xff0c;产生周期性变化的磁场。霍尔传感器靠近永磁体安装&#xff0c;能够检测到磁…

(转)正则化等最优化方法介绍

参考&#xff1a; http://blog.csdn.net/pipisorry/article/details/52108040 附带 损失函数&#xff1b;经验风险&#xff1b;正则化&#xff1b;结构风险 损失函数&#xff08;loss function&#xff09;是用来估量你模型的预测值f(x)与真实值Y的不一致程度&#xff0c;它是…

多维时序 | LightGBM多变量时序预测(Matlab完整源码和数据,适合基础小白研究)

多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09; 目录 多维时序 | LightGBM多变量时序预测&#xff08;Matlab完整源码和数据&#xff0c;适合基础小白研究&#xff09;效果一览基本介绍程序设计参考资料 效果一览…

【解决】Android Gradle Sync 报错 Could not read workspace metadata

异常信息 Caused by: java.io.UncheckedIOException:Could not read workspace metadata from C:\Users\xxx\.gradle\caches\transforms-4\69955912123c68eecd096b71c66ee211\metadata.bin 异常原因 看字面意思是不能读取metadata文件&#xff0c;原因可能是因为缓存目录异常…

Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析

第一轮提问 面试官: 谢飞机&#xff0c;我们先从基础问题开始。请问你知道Spring Boot和Spring Cloud的区别吗&#xff1f; 谢飞机: 当然知道&#xff01;Spring Boot主要用于快速构建独立运行的Spring应用&#xff0c;而Spring Cloud则是在Spring Boot的基础上实现分布式系统…

Express 路由使用、请求报文参数获取、路由参数提取

Express 路由使用、请求报文参数获取、路由参数提取 &#x1f6e3;️ 一、Express 路由基本用法 const express require(express); const app express();// 基本 GET 路由 app.get(/, (req, res) > {res.send(Hello GET!); });// POST 路由 app.post(/submit, (req, res)…

【前端】手写代码输出题易错点汇总

两天更新完。 const promise new Promise((resolve, reject) > {console.log(1);console.log(2); }); promise.then(() > {console.log(3); }); console.log(4); //1 //2 //4promise.then 是微任务&#xff0c;它会在所有的宏任务执行完之后才会执行&#xff0c;同时需…

基于深度学习和单目测距的前车防撞及车道偏离预警系统

随着人工智能与计算机视觉技术的飞速发展,高级驾驶辅助系统(ADAS)已成为现代汽车智能化的关键标志。它不仅能有效提升行车安全,还能为自动驾驶时代的全面到来奠定坚实基础。本文深入剖析一套功能完备、基于深度学习模型的 ADAS 系统的架构与核心实现,带您领略智能驾驶背后…

JWT(JSON Web Token)用户认证

1、颁发token <!--JWT依赖--><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency><dependency><groupId>javax.xml.bind</groupId>…

【质量管理】现代TRIZ(萃智)理论概述

一、什么是TRIZ理论 TRIZ理论,即发明问题解决理论(Teoriya Resheniya Izobreatatelskikh Zadatch),是由前苏联发明家根里奇阿奇舒勒(Genrich S. Altshuller)于1946年创立的。它是一门基于知识的、面向人的发明问题解决系统化方法学。TRIZ理论通过研究大量的专利,总结出技…

大模型学习笔记 day01 提示工程入门1.One-shot Few-shot提示学习法

如何应⽤和激发⼤语⾔模型的各⽅⾯能⼒ 提示⼯程 Prompt engineering 通过输⼊更加合理的提示&#xff0c;引导模型进⾏更有效的结果输出&#xff0c;本质上是⼀种引导和激发模型能⼒的⽅法更加轻量级的引导⽅法&#xff0c;尝试和实施的⻔槛更低&#xff1b;问题是受限于模型…

FPGA初级项目10——基于SPI的DAC芯片进行数模转换

FPGA初级项目10——基于SPI的DAC芯片进行数模转换 DAC芯片介绍 DAC 芯片&#xff08;数字模拟转换器&#xff09;是一种将数字信号转换为连续模拟信号&#xff08;如电压或电流&#xff09;的集成电路&#xff0c;广泛应用于电子系统中&#xff0c;连接数字世界与模拟世界。 …

如何在 Windows上安装 Python 3.6.5?

Windows 系统安装步骤 下载安装包 安装包下载链接&#xff1a;https://pan.quark.cn/s/9294ca0fd46a 运行安装程序 双击下载的 .exe 文件&#xff08;如 python-3.6.5.exe&#xff09;。 勾选 Add Python 3.6 to PATH&#xff08;重要&#xff01;这将自动配置环境变量&…

Cephalon端脑云:神经形态计算+边缘AI·重定义云端算力

前引&#xff1a;当算力不再是“奢侈品” &#xff0c;在人工智能、3D渲染、科学计算等领域&#xff0c;算力一直是横亘在个人与企业面前的“高墙”。高性能服务器价格动辄数十万元&#xff0c;专业设备维护成本高&#xff0c;普通人大多是望而却步。然而&#xff0c;Cephalon算…