当前位置: 首页 > news >正文

web常见的攻击方式有哪些?如何防御?

Web常见攻击方式及防御策略

SQL注入 (SQL Injection)

详细解析:
SQL 注入是一种利用应用程序未正确验证用户输入的漏洞,通过向应用传递恶意 SQL 查询来操纵数据库的行为。这种攻击可能导致敏感数据泄露、篡改或删除。

步骤:

  1. 攻击者找到可接受动态参数的应用程序入口点。
  2. 输入恶意 SQL 语句作为查询的一部分。
  3. 数据库执行该恶意查询,可能暴露敏感信息或允许未经授权的数据修改。

示例:
假设有一个登录表单,其后台代码如下:

$query = "SELECT * FROM users WHERE username='" . $_POST['username'] . "' AND password='" . $_POST['password'] . "'";

如果用户名字段被设置为 admin' --,则最终查询变为:
SELECT * FROM users WHERE username='admin' -- AND password=''

这会绕过密码验证。

防御方法:

  • 使用预处理语句(Prepared Statements)和参数化查询。
  • 对所有外部输入进行严格的校验和清理。
  • 避免显示详细的错误消息给终端用户。

跨站脚本攻击 (XSS)

详细解析:
跨站脚本攻击是指攻击者将恶意 JavaScript 或其他类型的客户端脚本嵌入网页中,在受害用户的浏览器环境中运行这些脚本。它分为反射型 XSS 和存储型 XSS。

步骤:
对于 存储型 XSS, 参考引用中的描述:

  1. 攻击者将恶意代码提交到目标网站的数据库中。
  2. 用户访问页面时,服务器从数据库提取内容并将其渲染成 HTML 响应。
  3. 浏览器加载此响应后执行嵌入的恶意脚本。

示例:
在留言板功能中,攻击者发布一条包含 <script>alert('Hacked')</script> 的评论。当其他用户浏览这条留言时,他们的浏览器会弹出警告框。

防御方法:

  • 实现上下文感知编码(Context-Aware Encoding),例如 HTML 编码、JavaScript 编码等。
  • 启用 Content Security Policy (CSP),限制哪些资源可以在页面上加载和执行。
特点描述预防方法
利用了HTML标签特性将恶意脚本插入到正常页面中被执行上下文编码, CSP

跨站点请求伪造 (CSRF)

详细解析:
CSRF 是一种强制已认证用户在其不知情的情况下发起恶意请求的技术。由于大多数 Web 应用依赖 cookies 来维持身份验证状态,因此 CSRF 攻击能够轻易伪装合法操作。

步骤:

  1. 攻击者诱导受害者点击链接或加载特定图像。
  2. 此动作触发了一个指向易受攻击网站的有效 HTTP 请求。
  3. 如果受害者当前处于登录状态,则该请求会被视为有效命令而被执行。

示例:
假设有银行转账接口 /transfer?amount=100&toAccount=attacker_account, 当用户访问了攻击者的恶意站点时,可能会自动发出这样的 GET 请求,从而完成资金转移。

防御方法:

  • 添加一次性令牌至每个重要请求,并由服务器端验证。
  • 检查 Referer 头部以确认请求来源可信度。

文件上传漏洞

详细解析:
文件上传漏洞发生在开发者未能充分过滤用户上传的内容类型及时机情况下发生的安全隐患。一旦成功利用,就有可能实现远程代码执行(RCE)或其他破坏行为。

步骤:

  1. 提供一个看似无害却隐藏危险逻辑的文件(比如PHP木马).
  2. 成功上传之后尝试让服务端解释执行.

示例:
假如上传机制只简单检查扩展名为 .jpg 即认为安全,但实际上内部仍可能是 PHP 脚本形式存在的话,那么就可以轻松突破防线。

防御方法:

  • 设置白名单限定允许上传的具体 MIME 类型.
  • 执行额外扫描检测潜在威胁成分.
  • 不直接保留原始命名路径以防目录遍历风险.
特点描述预防方法
关键在于文件性质判断失误导致非法文件得以存留并生效白名单控制,MIME匹配,病毒查杀工具辅助

总结表格
攻击名称特点描述预防方法
SQL注入动态构建SQL字符串黑客可以通过构造特殊字符组合影响DB交互过程参数绑定/预编译;严格输入验证
XSS客户端脚本植入在网页内嵌入恶意JS片段造成连锁反应输出转义;启用CSP
CSRF冒充真实用户提交指令让授权下的账户无意间做出违背意愿的动作加密token随附关键交易环节
文件上传漏洞错误识别所接收文档属性授权后的不当权限授予使得任意格式均可落地设定明确许可列表;二次审查

图表总结

在这里插入图片描述

相关文章:

  • JVM学习(四)--对象内存布局
  • Vue3性能优化: 大规模列表渲染解决方案
  • CUDA 性能优化 | 共享内存机制 / 向量化访存策略
  • 一个开源的 Blazor 跨平台入门级实战项目
  • Baklib内容中台的主要构成是什么?
  • vscode | Trae【实用插件】Remove empty lines 保存文件时删除空行
  • MQTT-共享订阅
  • 分布式缓存:缓存设计中的 7 大经典问题_缓存失效、缓存穿透、缓存雪崩
  • 解码AI:2025年人工智能技术发展全景图
  • 信息收集与搜索引擎
  • 【案例篇】 实现简单SSM工程-后端
  • 开源轻量级语音合成和语音克隆模型:OuteTTS-1.0-0.6B
  • 黑马Java基础笔记-15
  • QTabWidget垂直TabBar的图标和文本水平显示
  • 【论文阅读】——D^3-Human: Dynamic Disentangled Digital Human from Monocular Vi
  • 前端流行框架Vue3教程:25. 组件保持存活
  • [创业之路-375]:企业战略管理案例分析 - 华为科技巨擘的崛起:重构全球数字化底座的超级生命体
  • WPF 全屏显示实现(无标题栏按钮 + 自定义退出按钮)
  • 2025软考架构师 DeepSeek 案例预测
  • 在WPF中添加动画背景
  • 专业设计自学网站/网站工具查询
  • 小小水蜜桃视频高清在线观看/seo管理系统
  • 政府网站建设 报价/推广发帖网站
  • 网站名称及网址/南昌seo实用技巧
  • 全网通网站/seo入门教程网盘
  • 不会技术怎么做公司网站/店面怎么做位置定位