代码安全编写法律规范1
安全编码 1
通用编码原则(一)不要信任外部的用户输入或系统
应用程序应该彻底验证所有用户输入,然后再根据用户输入执行操作
验证可能包括筛选特别字符
针对用户意外地错误使用和某些人通过在系统中注入恶意命令蓄意进行攻击的情况,这种预防性措施对应用程序起到了保护作用
常见的例子包括 SQL 注入攻击、脚本注入和缓冲区溢出
此外,对于任何非受控的外部系统,都不要假定其安全性
(二)不要通过隐藏来保障安全
尝试使用让人迷惑的变量名来隐藏机密信息或将它们存储在不常用的文件位置,这些方法都不能提供安全保障,最好使用平台功能或使用已被证实可行的技术来保护数据
(三)以安全的方式处理失效假如应用程序失效(如发生严重错误等),要恰当的进行处理,一定要保护好机密数据
同时,在向最终用户返回错误消息时,不要公开任何不需要公开的信息
也就是不要提供任何有助于攻击者发现应用程序漏洞的详细信息
防范常见安全编码问题在实现应用软件的编码阶段,也较容易因缺乏严谨思考或不好的编程习惯而引入安全问题,而且这些安全问题产生的危害作用非常大,因其产生的漏洞常常会造成应用程序中其他部分构筑的安全控制措施完全失效
目前存在的相当数量系统漏洞都是由编码问题造成的
因此要想保证应用软件的安全性,必须在编码阶段继续高度贯彻安全性原则
在编码阶段,避开安全问题的基本原则如下: 程序只实现指定的功能 永远不要信任用户输入,对用户输入数据做有效性检查 必须考虑意外情况并进行处理 不要试图在发现错误之后继续执行 尽可能使用安全函数进行编程小心、仔细、细致地编程目前在各种应用软件中常见的安全漏洞如下所示,应对这些常见问题进行有针对性的防范
1缓冲区溢出假如对输入参数(字符串、整数等)处理时长度检查不严格,或对指针和数组越界访问不进行保护,就容易产生缓冲区溢出(Buf