程序员需要谨记的九大安全编码规则

历史已经证明,软件设计的缺陷一直是导致其漏洞被利用的最主要的罪魁祸首。安全专家发现,多数漏洞源自常见软件中相对有限的一些漏洞。软件开发者和设计者应当严格检查程序中的各种错误,尽量在软件部署之前就减少或清除其中的漏洞。 

下面列举的这些方法会有助于开发人员提高编码的安全性: 

一、注意编译器警告 

程序员应当使用编译器的最高警告等级。在编译过程中,应当修改程序中的错误,直到警告解除。应当使用静态和动态的分析工具来检测和清除安全缺陷。 

二、根据安全策略设置软件架构 

设计者应创建一个软件架构,并在设计软件的过程中实施和强化安全策略。例如,如果你的系统在不同的时间要求不同的特权,就不妨考虑将系统分解成能够互联通信的不同的子系统,每一个系统都有自己适当的特权。这种“分而治之”的方法可以有效地提高应用程序的安全性。 

三、验证输入 

程序设计者在设计程序时必须验证来自所有不可信数据源的输入。适当的输入验证可以清除多数软件漏洞。在设计程序时,必须对多数外部的数据源抱着怀疑的态度,其中包括命令行参数、网络接口、环境变量、用户控制的文件等。 

四、保持程序简单 

设计者要尽量使程序短小精悍。复杂的设计会增加实施、配置、使用过程中出现错误的可能性。程序越复杂,就需要越多的复杂的安全控制,企业需要付出的努力也就会越多。 

五、拒绝默认访问 

访问决策的制定应当根据许可权限而不是根据其它的任何方面。这意味着,默认情况下,应当拒绝访问,程序的保护机制应当根据“允许谁访问”来确认访问条件。 

六、遵循最小特权原则 

程序的每个处理过程在执行时,都应当仅使用为完成其工作而需要的最小特权。任何提升的许可权限都要尽量持续最短的时间。这种方法可以减少攻击者用提升的特权执行任意代码的可能性。 

七、“净化”传送给其它系统的数据 

所谓“净化”是指从用户输入的数据中清除恶意数据,如清除用户提交表单时的恶意的或错误的字符。 

程序设计者必须对传送到复杂的子系统(如命令外壳、关系型数据库、购买的商业软件组件)的所有数据进行“净化”。攻击者有可能通过使用SQL注入命令或其它注入攻击来调用这些组件中没有被使用的功能。这未必是输入验证问题,因为被调用的复杂的子系统并不理解调用过程中的前后关系。由于调用程序理解前后关系,所以我们要在调用子系统之前对数据进行“净化”。 

八、实施深度防御 

程序设计必须能够利用多种防御策略来管理风险。只有这样,才能在一层防御不够用或失效时,另外一层防御可以防止将安全设计上的缺陷变成可被利用的漏洞,从而可以限制攻击者利用漏洞的后果。例如,将安全编程技术与安全运行环境结合起来,可以减少在部署阶段残存在代码中的漏洞被攻击者在操作环境中利用的可能性。

九、使用有效的质量保证技术 

良好的质量保证技术可以有效地确认和清除漏洞。模糊测试、渗透测试、源代码审计等都可以结合起来使用,以此作为一个有效的质量保证项目的一部分。独立的安全检查可以使系统更安全。有资质的外部审查人员可以提供独立的观点,例如,外部人员有助于确认和纠正一些错误的设想。 

当然,为保证代码的安全,企业应当为开发语言和平台制定并实施一套健全的编码标准。 

安全代码规则编写指南 什么是安全编码规则? • 什么是Secure Coding Rulepacks? • 什么是自定义规则? • 什么是漏洞类别? • 什么是规则类型 立即下载

相关推荐

PCI知识背景知识&PCIE2;.0协议&8B10B;编码理论

文档是关于PCIE的所有全部资料,含有PCIE的北京介绍的资料,PCIE2.0协议描述资料,以及关于PCIE的8B10B编码理论。

JAVA安全编码规范

Java安全编码规范-1.0.6 by k4n5ha0 Java安全编码规范-1.0.6 by k4n5ha0 编写依据与参考文件: 1.《信息安全技术 应用软件安全编程指南》(国标 GBT38674-2020) 2.《Common Weakness Enumeration》 - 国际通用计算机软件缺陷字典 3.《OWASP Top 10 2017》 - 2017年十大Web 应用程序安全风险 4.《fortify - 代码审计规则》

Websec 8944

Cloudflare 5秒盾逆向实战:13次请求背后的Python补环境框架搭建指南

本文深入解析了如何通过Python构建浏览器环境模拟框架,以应对Cloudflare 5秒盾等现代Web防护机制。文章详细拆解了其背后复杂的13次请求链,涵盖了JavaScript执行引擎集成、DOM事件模拟、网络请求控制及Canvas指纹等环境检测的完整实现方案,为自动化数据采集和逆向工程提供了实战指南。

gold的博客 347

安全编码有章可循

在做好安全软件开发的准备之后,开发团队还需要清楚安全编码的原则。这是开发任何健壮、安全软件的重要基础。 保持代码的简洁 代码库越小越简单,就越容易验证软件的安全性。有些代码的功能强大,可能会造成严重的后果,通过减少实现这些功能的源代码模块的大小,就可以极大地减少代码中的漏洞数量。 在此,列示几个缩短和简化代码的方法: 1、确保软件仅包含所要求或规定的功能。增加不必要的功能会增加软件的攻击面...

编程资料大全 373

matlab snr矩阵计算公式_基于MATLAB和Adams的悬置系统解耦计算方法对比

一、概述动力总成悬置系统主要有两个作用:一是固定和支撑动力总成,限制动力总成在各种工况下的位移量,防止与其它部件碰撞;二是隔振作用,将动力总成的振动尽可能少的传递到车身。悬置系统隔振性能的核心就是解决刚体模态的频率分配和振动耦合问题,简言之就是关注动力总成的刚体模态和解耦率。动力总成悬置系统的刚体模态频率和能量解耦分析,行业内的主流计算方法分两种:一是用MATLAB编程进行分析计算,二是...

weixin_33416900的博客 1449

win11 labelme 汉化菜单

【代码】win11 labelme 汉化菜单。

一直记录 1169

WEB安全漏洞深入分析及其安全编码

WEB安全漏洞深入分析及其安全编码

Innocence_0的博客 454

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

信息安全编码标准:使用SAST实施安全编码实践

当组织遵守信息安全编码最佳实践时,他们可以减少维护软件的成本,开发人员可以花更多的时间进行创新,而不是把时间花在bug修复上。SAST使用源代码中记录的细节,以及它的代码结构,以确保遵守安全的编码标准和指导方针。开发团队可以在开发过程开始时使用不同的安全编码标准和指南,如CERT安全编码标准和CWE,以确保软件满足一定的质量和安全需求。其目标是识别可能暴露软件漏洞的编码违规和弱点。当开发团队使用信息安全编码标准来开发软件时,通常希望更少的安全Bug和更好的代码质量,从而给用户带来健壮性更好的产品。

1893

Dataworks实现接口调用

在本地linux虚拟机(不用在意linux版本),安装Anaconda后配置对应的虚拟环境,将虚拟环境的python包整体打包(路径一般为:~/anaconda/envs/env_name/lib/pyyhon3.7/site-packages):上传资源,将第三方包上传至dataworks(注意:所有上传文件均要打包上传,直接上传文件会乱码导致无法使用):PyODPS,其中PyODSP2的python版本为2.7,PyODSP3的python版本为3.7。:在PyODPS中引用资源,然后开发接口。

hutc_Alan的博客 1680

开关电源辅助电源设计全流程拆解

地类型定义包含电路功率地(PGND)高压侧地,与主功率电路地相连整流桥负极、原边电感地、UC3842的功率地信号地(SGND)低压侧地,与控制/采样电路地相连副边整流管地、TL431地、MCU/运放地。

lyzh971103的博客 1468

Java安全编码小结

平时开发中要养成安全意识,建立攻击者思维,编写可靠健壮的代码 1. 安全编码的基本原则 外部输入都是不安全的,需严格校验; 建立防御性编程的策略; 尽量减少代码的攻击面,避免与环境过多的交互,代码尽量简单; 避免程序内部的处理流程暴露到外部环境; 2. 数据的校验 2.1 外界传入的数据要严格校验,常用的策略有白名单(只接受安全的)、黑名单(拒绝已知非安全)、数据净化(编码、替换特殊字符、删除特殊字符等); 2.2 禁止使用外部不可信数据直接拼接SQL,防止SQL注入。防止SQL注入的措施有: 使.

loveoobaby的博客 5217

全志 T527_Android13 编译 [ 避坑必看 ]

Swap 概念: Linux中Swap(即:交换分区),类似于Windows的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况。它的功能就是在内存不够的情况下,操作系统先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行。当输入编译命令make -j16 的时候,会有如下提示,这是官方建议通过减少编译线程来解决编译时消耗内存过大的问题。Android 13 系统的编译流程,编译一共分为两部分:内核编译与 Android 编译。

公众号:嵌入式分享 2111

软件工程师需要谨记的九大安全编码规则

程序员需要谨记的九大安全编码规则   历史已经证明,软件设计的缺陷一直是导致其漏洞被利用的最主要的罪魁祸首。安全专家发现,多数漏洞源自常见软件中相对有限的一些漏洞。软件开发者和设计者应当严格检查程序中的各种错误,尽量在软件部署之前就减少或清除其中的漏洞。下面列举的这些方法会有助于开发人员提高编码的安全性:一、注意编译器警告程序员应当使用编译器的最高警告等级。在编译过程中,应当修改...

230

LPDDR6 技术标准详解(JESD209-6)

是继 LPDDR5/5X 之后的新一代低功耗 DRAM 标准,专为满足移动终端、AI、边缘计算等高带宽、低功耗场景而设计。该标准通过全新架构、动态功耗控制机制和增强型数据完整性机制,实现性能、能效与可靠性的全面升级。LPDDR6 并非仅是速度升级,更是内存架构设计思路的演进,围绕“低功耗 + 高带宽 + 强安全”的三维目标,构建下一代 SoC 平台关键基础。✅ 高带宽:支持 32B/64B 动态突发✅ 低功耗:动态电压、通道切换✅ 高可靠性:ECC + 自测试 + 安全区。

weixin_43199439的博客 2569

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

重要链接

http://blog.youkuaiyun.com/cuijianzhongswust/article/details/7308987 (手把手教你把Vim改装成一个IDE编程环境(图文)) http://blog.youkuaiyun.com/idoit0204/article/details/3503202 (linux内核模块) http://developer.51cto.com/a

lwbkfc的专栏 783

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

前端安全编码规范

前端安全编码规范1.跨站脚本攻击(Cross Sites Script)1.1 反射型XSS1.2 存储型XSS1.3 DOM based XSS1.4 如何去检测是否存在XSS1.5 XSS的攻击方式1.5.1 Cookie劫持1.5.2 构造GET和POST请求1.5.3 XSS钓鱼1.5.4 获取用户真实的IP地址1.6 XSS的防御方式1.6.1 HttpOnly1.6.2 输入检查(XSS Filter)1.6.3 输出检查1.6.4 更严格的做法2.跨站点请求伪造(Cross Sites Req

qq_41945550的博客 927

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 六分钟八法则塑造优秀程序员
下一篇: 为什么CoffeeScript这么美?
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值