2010最危险的编程错误(转)

网络无处不在的今天,安全问题日益严峻,攻击事件层出不穷,应该说,软件系统中代码存在安全漏洞是主要的祸因之一。而这实际上反映了软件开发人员在编程的安全性方面缺乏必要的培训和常识。

由CWS(美国国土安全部下属的软件保证项目)与SANS(权威安全培训组织)联合编制的最危险的25个编程错误,是软件开发人员非常好的快速学习资料。日前,两个机构发布了2010年的编程错误列表。最新的25个最危险的编程错误如下。

  1. 跨站点脚本攻击(4)

  2. SQL注入(3)

  3. 经典缓冲区溢出(1)

  4. 跨站点请求伪造(7)

  5. 不正确的访问控制(授权)

  6. 在安全决策中依赖不可信的输入

  7. 不正确地将路径名限制为受限路径

  8. 上传危险类型的文件不受限

  9. 操作系统命令中特殊因素的处理不正确(操作系统命令注入)(5)

  10. 敏感信息未加密(6)

  11. 使用硬编码凭据(21)

  12. 以不正确的长度值访问缓冲区

  13. PHP程序中Include/Require语句文件名控制不正确(PHP文件侵入)

  14. 数组下标验证不正确

  15. 异常条件检查不正确

  16. 错误消息泄露信息(9)

  17. 整数溢出

  18. 缓冲区大小计算错误

  19. 关键函数缺乏身份验证

  20. 下载未经完整性检查的代码(15)

  21. 对关键资源的错误权限分配(22)

  22. 资源分配没有限制

  23. URL重导向到不受信的资源

  24. 使用被破解或有风险的加密算法(20)

  25. 存在竞争情况(Race condition)(8)

其中后加括号有数字的,是该项错误去年的排名。显然,连续两年都入选的错误,千万不要再犯了。

  1. 不正确的编码或转义输出

  2. 限定缓冲区内操作失败

  3. 外部控制重要状态数据

  4. 外部控制文件名或路径

  5. 不可信搜索路径

  6. 控制代码生成错误(代码注入)

  7. 错误的资源关闭或发布

  8. 不正确的初始化

  9. 错误计算

  10. 可渗透防护

  11. 随机值的错误利用

  12. 滥用特权操作

  13. 客户端执行服务器端安全

推荐大家下载并仔细研读完整的报告,有条件的可以组织开发团队和公司集中学习。这个报告相对枯燥了一些,如果你对哪些错误有比较直观的一看就懂的示例或者解释,欢迎在下面回复。

2009年的编程错误列表:

Original: https://www.cnblogs.com/EasyData/archive/2010/02/19/1669512.html
Author: 迷你软件
Title: 2010最危险的编程错误(转)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598718/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 事务

    事务 *事务的简介 事务是一组操作的集合,这是一个不可分割的工作单元。事务将向整个系统提交或取消操作请求。这些操作只能同时成功和失败。 [En] A transaction is …

    数据库 2023年5月24日
    0113
  • 10、比较Bigdecimal类型是否相等的方法

    一、Bigdecimal.equals()详解: Bigdecimal的equals方法不仅仅比较值的大小是否相等,首先比较的是scale(scale是bigdecimal的保留小…

    数据库 2023年6月6日
    087
  • cobbler部署

    cobbler cobbler 一、cobbler简介 二、cobbler对应关系 三、cobbler工作原理 cobbler部署 进行测试 web界面自动安装 一、cobbler…

    数据库 2023年6月14日
    086
  • html学习笔记

    学完html基本以后,现在对html知识做以下总结: 以上内容来源于bilibiliup狂神说 html html,即超文本标记语言(Hyper Text Markup Langu…

    数据库 2023年6月14日
    089
  • 浅谈GTID及简单测试

    今天简单介绍一下GTID,并有部分相关实验。 GTID相信大家都不陌生,GTID的英文全称为Global Transaction Identifier,在MySQL主从架构中应用广…

    数据库 2023年6月16日
    071
  • [SuperSocket2.0]SuperSocket 2.0从入门到懵逼

    SuperSocket 2.0从入门到懵逼 1 使用SuperSocket 2.0在AspNetCore项目中搭建一个Socket服务器 1.1 引入SuperSocket 2.0…

    数据库 2023年6月9日
    0141
  • 格林童话之祖父和孙子

    从前有个很老很老的老人,眼睛花,耳朵也背,双膝还不住地发抖。每当他坐在餐桌前 吃饭时,汤匙也握不稳,常常把菜汤撒在桌布上,汤还会从嘴边流出来。儿子和媳妇都嫌弃 他,老人只好躲到灶后…

    数据库 2023年6月9日
    093
  • MySQL高可用架构搭建实战

    前言 对于 MySQL 数据库作为各个业务系统的存储介质,在系统中承担着非常重要的职责,如果数据库崩了,那么对于读和写数据库的操作都会受到影响。如果不能迅速恢复,对业务的影响是非常…

    数据库 2023年5月24日
    0112
  • 如何构建你自己的计算机网络知识体系?

    大家好,我是小牛肉,不知道各位曾经有没有和我一样的困惑,就是有些知识好像已经看了好多遍了,但是知识点在脑子中是分散的,没办法串联起来,别人问一个问题我能答出来一点,但是你让我自己从…

    数据库 2023年6月6日
    084
  • 高可用 | 关于 Xenon 高可用的一些思考

    原创:知数堂 Xenon 不会补日志,Xenon 只会从包含最大 GTID 的所有 Follower 中选举一个 Follower,使之成为 Leader 。重新配置主从复制,并把…

    数据库 2023年5月24日
    080
  • MySQL SUBSTRING_INDEX截取字符串

    一、SUBSTRING_INDEX 二、示例 Original: https://www.cnblogs.com/woods1815/p/16368248.htmlAuthor: …

    数据库 2023年6月14日
    089
  • QT槽函数获取信号发送对象

    Qt 在槽函数中获取信号发送对象 Qt中提供了一个函数 qobject_cast(QObject *object),可以通过这个函数判断信号发出对象 Qt 帮助文档的解释:Retu…

    数据库 2023年6月16日
    0136
  • python_numpy数组入门

    NumPy 数组的维数称为秩(rank),秩就是轴的数量,即数组的维度,一维数组的秩为 1,二维数组的秩为 2,以此类推。 在 NumPy中,每一个线性的数组称为是一个轴(axis…

    数据库 2023年6月11日
    089
  • Resilience4j 实践

    微服务设计模式 – circuit breaker circuit breaker 熔断器,在很多不同的领域都有这个定义,例如电路里面的熔断器,股票行业里面的熔断,当然…

    数据库 2023年6月11日
    0103
  • python使用sys.path添加临时环境变量

    直接上代码: 1 # -*- coding: gbk -*- 2 import sys 3 4 sys.path.append(‘H:\project_py\jiJin’) # 把…

    数据库 2023年6月11日
    089
  • 基于Vue简易封装的快速构建Echarts组件 — fx67llQuickEcharts

    fx67llQuickEcharts A tool to help you use Echarts quickly! npm 组件说明 这本来是一个测试如何发布Vue组件至npm库…

    数据库 2023年6月11日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球