堕落的上帝吧 关注:95贴子:3,144
  • 8回复贴,共1

————————————

只看楼主收藏回复

——————————


来自Android客户端1楼2013-06-08 15:36回复
    关于DOS。


    来自Android客户端2楼2013-06-08 15:37
    回复
      关于安全的三个最核心的元素CIA,也就是:
      Confidentiality(保密性):信息只能被授权的人查阅。
      Integrity(完整性):信息没有被意外地修改。
      Availability(有效性):信息或者资源在需要的时候,总是可以使用的。
      不同的产品对有效性的要求是不一样的,有的要求三个9,有的要求4个9。一个产品的可用性对客户的影响非常大,如果服务经常不可以使用,客户将可能选择其它产品。可用性对一个系统来说是十分关键的,如果一个系统经常不可用,就像12306那样,你会觉得很郁闷,客户也会觉得很郁闷。本片文章着重分析和总结了几种导致DOS的原因,作为参考。
      DOS产生的主要原因有以下几种:
      1) 系统存在耗资源的操作,包括内存和CPU以及带宽
      当一个操作需要消耗大量的CPU或者内存的时候,首先需要想的是:是否有其他不需要耗费这么多资源的方法可以实现?如果有则是最好的啦。如果没有,需要注意这个操作是那些角色可以操作?是内部接口还是外部接口?谁可以触发这个操作?如何避免被一般用户出发这个操作?
      举个例子:一个搜索的页面,对于用户来说,可以设置每个页面显示多少条记录。某些别有用心的用户可能会尝试修改一个页面显示的最大记录数为一个很大的值,例如:10000。如果在服务器端没有控制好,通过了验证,而且系统确实有大量的数据,这样的查询是非常耗资源的。也许你会认为10000条记录没什么,那么,如果修改为1000,000呢?
      2) 使用共享资源的操作,容易导致死锁
      现在的系统都是并发量很大的系统,而一个系统又难免会有一些资源是共享的,如果系统存在一个线程需要使用两个共享的资源,在其他线程也需要使用这些资源,就有可能导致死锁,进而使得系统停止工作。而且,这样的问题还非常难以调查具体的原因,貌似程序运行的很好,其实,很多功能都已经停止工作。监控程序也可能漏掉这样的监控。所以,其危害比较大。
      因此,在使用共享资源时,应该尽量减少保持的时间,用完快速释放。必须要同时使用多个资源时,必须保证以同样的顺序使用,最好是能够封装在一个API之内,统一处理。另外,一些系统的API也有可能会导致阻塞,在调用可能导致阻塞的API之前,必须保证不上锁任何资源。例如:访问数据库有可能会因为数据库服务器的原因导致阻塞,这时,就可以采用先访问数据库,得到数据之后,再使用共享资源进行下一步操作。当然,最好的方法还是通过设计尽量避免在同一个线程里同时访问多个共享资源。
      3) 缓冲区溢出
      缓冲区溢出是一个众所周知的导致程序不可用的原因。其危害性,不用说,可能大多说的C/C++c程序员也都知道,也都对峙耿耿于怀。其避免方法也很简单,通过有效的inputvalidation避免其发生,这一点很难做到。不过,还有另外一个比较好的方法就是:使用安全的库是最好的方法,例如:STL,Safe C。
      4) 内存泄漏
      使用C/C++语言编程时,需要使用malloc/free和new/delete分配和释放内存。很容易犯的错误就是:
      分配和释放不匹配:例如使用new分配,使用free释放,
      这样会导致内存泄漏。
      重复释放 : 例如new 分配一块内存之后,delete两次,
      这样会导致程序crash。
      不正确地释放 : 使用new[]分配内存,使用delete释放,
      这样会导致内存泄漏。
      对于一些客户端程序来说,一点内存泄漏可能结果不是很严重。但是,对于后台程 序来说,一点点的内存泄漏,都可能导致严重的Crash。因为,后台程序是常年累
      月地在运行,泄漏的内存会越来越多(这个根据泄漏内存的操作的频度有关),进
      而导致程序的内存不足。所以,严格按照语言设计的理念,正确地使用接口很重要。


      来自Android客户端3楼2013-06-08 15:37
      回复
        @MicroFD


        来自Android客户端5楼2013-06-08 15:39
        收起回复
          求加精!@MicroFD


          来自Android客户端6楼2013-06-08 15:41
          回复


            来自Android客户端7楼2013-09-15 06:09
            回复


              来自Android客户端8楼2013-09-19 05:21
              回复