精华内容
下载资源
问答
  • 编写安全代码》的随书源代码
  • 编写安全代码+随书源代码
  • 编写安全代码随书源代码Secureco
  • This is a book both of us have wanted to write for a long time. We’re both involved in convincing and teaching people how to make their applications secure from attack, and until recently few people ...
  • 编写安全代码

    2007-07-06 10:30:28
    编写安全代码编写安全代码
  • 编写安全代码01

    2012-12-05 14:24:52
    编写安全代码
  • 安全代码编写规范

    2018-02-26 13:22:18
    安全代码编写规范,总结了软件开发过程中,普通应该遵守的安全规则。通用的。
  • 在Windows Vista上编写安全代码 在Windows Vista上编写安全代码 在Windows Vista上编写安全代码
  • 编写安全的Symbian C++游戏代码 编写安全的Symbian C++游戏代码 编写安全的Symbian C++游戏代码 编写安全的Symbian C++游戏代码
  • 编写安全代码
  • 编写安全代码
  • 什么是安全编码规则? • 什么是Secure Coding Rulepacks? • 什么是自定义规则? • 什么是漏洞类别? • 什么是规则类型
  • Fortify 安全代码使用指南 Chapter 1: 理解安全编码规则 这章节包括以下标题: 什么是安全编码规则? 什么是Secure Coding Rulepacks?什么是自定义规则?什么是漏洞类别?什么是规则类型 什么是安全...
  • 软件安全,软件安全对代码编写安全进行全面的阐述。
  • 本书是想在Windows Vista和Win7上写安全代码的必读之作 高清版 是我花银子弄来的。不清晰退分
  • 《Writing Secure Code for Windows Vista》;《在windows vista上编写安全代码代码,win7上程序权限提升代码
  • 编写安全代码(第2版)

    千次阅读 2010-07-01 20:10:00
  • 接口编写java代码

    2017-08-29 09:42:10
    接口编写,后台代码中获取安全天数
  • PDF格式电子书 微软发布 全书分为[当下的安全]、[安全代码技术]、[加强安全技术]、[专题]4部分,共24个章节
  • Web应用代码安全编写注意事项,帮助您编写安全合理的程序代码
  • 没有代码编写安全可靠应用程序的最佳方式。 什么都不写 无处不在。
  • 编写安全代码的一些技巧 C++

    千次阅读 2006-07-24 11:45:00
    编写安全代码的一些技巧Stanly.Lee 2006-7-19 内存管理:1. 坚持谁分配谁释放的原则, 某个类分配的内存应该由这个类来释放(主动或者被动的)。动态连接库分配的内存更应该如此。2. new/delete new[]/delete...

    编写安全的代码的一些技巧

    Stanly.Lee 2006-7-19

     

    内存管理:

    1.       坚持谁分配谁释放的原则, 某个类分配的内存应该由这个类来释放(主动或者被动的)。动态连接库分配的内存更应该如此。

    2.       new/delete  new[]/delete[] malloc/free必须要严格配对。比如千万不要用free去释放由new分配的内存。

    3.       不要把STL容器作为参数在动态库之间传来传去,因为你很难保证内存分配和释放的地方是一致的.

    4.       不要把模板对象作为参数在动态库之间传来传去,因为你很也难保证内存分配和释放的地方是一致的. 甚至很难保证代码是一致的.

    5.       delete一个对象的时候,要保证其它引用到这个对象的地方都知道这个对象被delete掉了. 因此最好的办法是学习COM的对象引用计数方法.

    6.       函数永远不要返回局部对象的地址(包括引用), 因为函数结束的时候,这个地址虽然还有效.但是通常会被垃圾数据覆盖的.

    7.       对于一个有虚拟函数的类,千万别用memset(this,….) 来清空自己, 因为这样在清空类的成员数据的时候也会把虚表给清空掉.

    8.       如果一个类是虚类.那么它的析构函数也应该是虚的. 这样才会正确的调用到子类的析构函数, 不然容易发生内存泄漏.

    9.       如果你的一个类是写在dll里的.而且准备输出的. 那么尽量把所有的函数都写到cpp. 而且一定要把构造和析构函数都写到cpp . 哪怕他们一行代码都没有.免的内存分配释放的代码不一致.

    10.    记得在适当的时候写拷贝构造函数和operator = 函数 , 因为如果你的类里分配了内存并用指针保存的时候, 不写这两个函数很容易造成内存被double free.

    11.    复制一个字符串的时候,如果需要分配内存. 记住内存的大小是strlen() + 1, 千万记得那个1…..

    12.    …. To be continue

     

    防止Crash和方便Debug

    1.            遵守内存管理节里的条款,能有效的减少程序的crash.

    2.            使用一个指针前, 尽量的加判断, 防止非法指针的出现.

    3.            指针变量一定要初始化. 不然容易造成条款2里的判断失效. 其它的变量也应该要记得初始化.

    4.            删除一个对象的指针后, 应该把指针=NULL, 这是防止野指针的有效方法之一.

    5.            注意检查下标的范围. 不管是数组的还是容器的.. 往大里说, 尽量要检查数据的合理性.不要对数据的合理性做任何假设. 对非法数据应该尽量予以纠正. 纠正失败后应该要记录log,并输出错误信息.以方便检查和调试.

    6.            如上所说, 千万别吝啬logassert.  Assert 往往能方便抓住那些异常的情况.  注意assert里不要写一些有意义的代码. 因为release版本情况下assert是被忽略的. 程序出现异常的时候 , 记得一定要记log, log到控制台,到文件.或者弹出对话框.最低限度,一定要下assert .

    7.            注意检查函数的返回值, 配合条款6 , 能有效的防止很多能避免的crash..

    8.            做容器的遍历的时候, 删除容器的某一项是要注意: (1)正确的删除, (2)删除后要记得容器大小是改变了的. (3)注意有可能连vector自己都会被释放掉的. 比如signal下连接了好多消息函数, 这个时候,应该把容器先复制一份. 再做循环.

    9.            别在inline函数里声明静态变量….. 注意写在头文件里类的成员函数都是inline函数.

    10.         dll之间传递数据的时候,尽量使用标准C的数据类型和C++的纯虚接口(注意是没有成员变量的那种接口).

    11.         C++类在做转化的时候, 从父类到子类转化的时候用dynamic_case<> . 而且注意判断转化的结果是不是NULL.

    12.         …. To be continue

     
    展开全文
  • Java并发:如何编写线程安全代码

    千次阅读 2016-03-27 02:24:08
    方式一:编写可重入代码编写可重入代码,即编写那些压根不会共享数据的代码编写可重入代码包括借助线程本地存储这一特性:线程本地存储* 是一种自动化机制,可以为使用同一个变量的所有线程都创建一个各自不同的...

    转载请注明出处: jiq•钦's technical Blog


    一切线程安全问题都是源自于不正确的共享数据导致。


    方式一:编写可重入代码

    编写可重入代码,即编写那些压根不会共享数据的代码。

    编写可重入代码包括借助线程本地存储这一特性:

    线程本地存储

    * 是一种自动化机制,可以为使用同一个变量的所有线程都创建一个各自不同的存储。

     * 最主要的是,他可以使得你将状态与线程关联起来。

    private static ThreadLocal<Integer>value = new ThreadLocal<Integer>(){
    private Random rand = new Random();
    protected synchronized IntegerinitialValue(){
    return rand.nextInt(1000);
    }
    };

    方式二:资源互斥

    如果要在并发环境共享数据(基本类型和引用类型),那么有几种发布共享对象的策略可以保障线程安全。 

    (1)原子操作(AtomicLong,AtomicReference等)

    在java中,对域中的值做赋值和返回操作是原子的,但是递增(i++)以及加法(i+=2)等操作都不是原子的。即使将这些域设置为volatile(告诉编译器不要做任何关于读取和写入的优化)也无法改变这一事实。最明智的做法就是遵循Brian的同步原则。

    (2)volatile(注意其无法保证操作的原子性)

    (3)synchronized与ReentrantLock保护的域

    这两者的区别很明显,首先使用Lock通常会比使用synchronized要高效许多,这是否以为这永远不应该使用synchronized关键字呢?这里有两个因素需要考虑。首先,当互斥方法体非常小的时候,是可以的;其次,很明显synchronized所产生的代码,与Lock所需的“加锁-try/finally-解锁”相比起来可读性高很多。其次ReentrantLock提供了更多高级的功能。


    (4)不可变对象(final)

    (5)仅在static域中修改(JVM内部具备同步机制,会保障线程安全)


    (6)线程安全的容器(HashTable,Vector,ConcurrentHashMap等)



    展开全文
  • Mutations - 用于编写安全、可重用和可维护的代码Ruby和Rails应用程序
  • 如何编写异常安全的C++代码

    千次阅读 2011-07-15 11:30:22
    异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全代码了,而且编写异常安全代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论...
    展开全文
  • 使用C#编写安全代码(翻译)

    千次阅读 2007-02-19 17:57:00
    这篇文章的原文大家可以在 http://www.codeproject.com/csharp/unsafe_prog.asp 找到,作者是Kumar Gaurav Khanna,我仅仅对原文进行翻译,以下是文章的正文使用C#编写安全代码 作者:Kumar Gaurav Khanna介绍...
  • 编写异常安全代码永远不会亏本

    千次阅读 2009-09-21 15:10:00
    今天发现程序中有一个bug,是由异常安全引起的。代码中为了同步数据的访问,使用了一个critical section,当代码出现异常时不会调用LeaveCriticalSection,所以出现了死锁。这是一个很常见的问题,也很容易解决,即...
  • C++编写的信息安全技术程序源代码(共29个),内容很丰富,全部用C++编写的。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 539,253
精华内容 215,701
关键字:

编写安全代码