Username: Password:

请教一个问题-软件安全
来源:ChinaUnix.net作者:ChinaUnix.net 发布时间:2008-04-11 06:31:15


各位在做应用软件研发中,在软件安全和数据安全面会采取那些措施呢?假如要在一个应用软件中加入安全功能,会考虑从什么方面着手呢?
大家讨论讨论...

 mygod 回复于:2003-05-23 09:29:54
您说的安全性可能是指数据的安全性吧,一般应当从两个方面来考虑:


第一,数据本身的安全性,主要是防止出现业务数据丢失,确保数据的一致性等方面,一般这些都是通过采用的软件和硬件平台来保障的,可能应用研发的人关心的较少。

第二,数据访问的安全性,系统要防止被攻击,防止越权的操作,防止个人的信息被盗窃等,这里面也需要依靠一些软件和硬件平台和标准来实现,但是应用要考虑的东西就相对要多,根据系统的大小和设计目标而定

 人生五十年 回复于:2003-05-23 10:02:26
我说的不但如此,更有很多?例如功能安全,代码自己的安全性,安全审计,怎样杜绝后门等。。。

 mygod 回复于:2003-05-23 10:07:27
功能安全和代码的安全是什么?我指的是作企业级的应用,并且是从使用者的角度,主要还是围绕着数据的安全,能把这些作好已很不容易了。

 人生五十年 回复于:2003-05-23 10:13:12
那我就问怎么防止用户越权操作或对用户的在软件中进行行为跟踪?

 mygod 回复于:2003-05-23 10:24:37
用户的权限管理是每个系统最基本必要的功能,这个很难说要软件来完成还是系统来完成,我觉得应用上考虑的比较简单,因为一般的越权操作都是靠伪造身份的方法,很多的身份的校验是需要一定平台支持的应用是无能为力的,但是软件设计的时候(特别是分层的设计模式)应当考虑防止饶过软件的安全校验的层直接访问应用逻辑的可能。

假如系统的安全需要较高,一般对系统的操作应当记录操作日志,而且能够由系统管理员监控,而且应当有类似于“总分核对”的东西。

 mygod 回复于:2003-05-23 10:27:33
我觉得应用主要还是应当考虑怎么确保业务上的安全性,即防止用户合理合法的使用系统违规操作,系统级的安全性需要相应的软件和硬件平台,应用需要作的是使用这些资源而已。

 人生五十年 回复于:2003-05-23 10:29:35
我觉的用户的权限管理应该是由系统和软件来综合完成的,最好保持两者在用户上的统一性,实现双重的访问控制。
我想问一下,伪造身份的的方法一般会怎么实现?直接访问应用逻辑的可能性更有那些?

 人生五十年 回复于:2003-05-23 10:30:33
[quote:12739beda2="mygod"]我觉得应用主要还是应当考虑怎么确保业务上的安全性,即防止用户合理合法的使用系统违规操作,系统级的安全性需要相应的软件和硬件平台,应用需要作的是使用这些资源而已。[/quote:12739beda2]
怎么理解?

 mygod 回复于:2003-05-23 11:02:08
[quote:16e4c98b2a="人生五十年"]我觉的用户的权限管理应该是由系统和软件来综合完成的,最好保持两者在用户上的统一性,实现双重的访问控制。
我想问一下,伪造身份的的方法一般会怎么实现?直接访问应用逻辑的可能性更有那些?[/quote:16e4c98b2a]

权限管理在应用的设计上不是个难题,一般您作过一个系统的权限管理,以后的基本上就改改就能够了,因为任何的组织都大体是相同的组织方法,当然“地下党”的单线联系除外   :lol:

直接访问业务逻辑,比如一个系统,系统客户端运行的时候开始需要登陆,登录以后就能够使用系统,假如系统只在登录的时候校验用户的身份可能就不是个安全的作法,因为对于正常使用系统的人来说当然没关系,但是假如有人直接发送应用请求的数据包给服务器,假如应用没有方法确保该请求是通过正常的登录来的可能就有问题。

 mygod 回复于:2003-05-23 11:03:30
至于身份怎么伪造,您是作安全的可能比我了解的更多吧。

 mygod 回复于:2003-05-23 11:06:23
[quote:e574711d1d="人生五十年"]
怎么理解?[/quote:e574711d1d]

就是具体的业务具体分析了,这些首先是要在业务流程上来确保,应用研发要作的是搞清楚业务的规则并在系统中体现出来,但是实际上应用研发人员会经常协助用户一起定制一些业务的规范,这个可能就脱离咱们讨论的“安全”的范围了,那是业务上的规范

 mygod 回复于:2003-05-23 11:10:49
举个例子,就拿系统中经常要作的数据通讯来说吧,假如自己写通讯程式来实现数据传送,为了确保业务数据的安全性,可能就需要加密,机密能够使用加密机,加密机本身会确保数据的安全,应用要作的就是使用加密机提供给应用的编程接口,假如没有加密机就只好自己通过程式来加密,可能安全性就降低一些。假如使用中间件来通讯,那应用要作的就是调用中间件的编程接口,数据传输的安全性由中间件来确保。

 e4gle 回复于:2003-05-23 11:25:02
从应用上去解决安全问题?是个思路,但不完全,应用必然假设在操作系统之上,假如操作系统被人窃取权限,应用再安全有啥用?再谈楼顶的老兄提的软件安全问题,其实就是安全编程,这是我们都应该注意的问题,非安全编程会导致:缓冲溢出,堆溢出,单字节溢出,整形溢出,逻辑错误等等许多问题,这都有可能使入侵者直接拿到权限,安全编程不是三言两语的,只是大家在编程的时候要多多考虑,最好先学会在内核中编程的严谨性再去编写应用程式就很容易了

 e4gle 回复于:2003-05-23 11:28:35
一切应用安全的基础在于操作系统的安全,操作系统安全的基础又在于硬件服务器的安全,据我所知,windows或unix本身的文档访问机制是自主访问只能达到国家2级安全标准,还是很不完善的,所以就需要先从操作系统入手解决安全问题,比如杜绝非法的系统调用,杜绝内核后门,从0层增强文档访问机制增加MAC,ACL等,在这个的基础上我们再谈上面的应用,否则一切都是空谈,现在公安部推行的国家5个等级的安全标准就是为了这个意思。

 人生五十年 回复于:2003-05-23 11:39:54
我想实现软件的安全性能够从以下方面来做:
先要确定安全目标,然后做分布性平台对象、操作系统、认证技术的选择。检查代码的安全性(比如说代码是否模糊,密码的算法等),做软件稽核(体系结构的安全),怎样有效防止溢出,访问控制,信任的管理,密码学的应用,口令认证的方式和原则等
不知道是不是这样?

 mygod 回复于:2003-05-23 11:44:38
同意应当先指定一个安全目标,更有也应当考虑选用的硬件产品和平台软件(中间件、数据库等)的安全性。

其实和其说软件的安全性不如说系统的安全性要好些。

 人生五十年 回复于:2003-05-23 11:46:26
两者本来就是不可分的,应用用于系统之上

 e4gle 回复于:2003-05-23 11:53:57
现在国家正在大力实施的就是操作系统的安全,服务器的安全,现在操作系统由于没有国产化,所以现在的状况只能是加固,这作为一个过渡阶段,服务器已国产化,比如曙光,浪潮等
等这两个做好了,再谈及数据库,中间件连同上面的应用安全。至于软件编写时的安全问题,我觉得主要还是人的因素,我觉得现在很多应用程式员盲目编程不求严谨,比如malloc分配的一段内存,在其中的一个程式分支就没有释放,这很容易导致安全问题,要先从人入手

 人生五十年 回复于:2003-05-23 11:59:26
但是在验收软件的时候很难涉及的很深的?那应该怎么做呢

 e4gle 回复于:2003-05-23 12:17:59
做各种代码或二进制的安全检查工具,这已有很多现成的工具了,但是主要还是人,验收也只是个方面,并不能完全杜绝非安全编程,主要还是从程式员素质入手

 无双 回复于:2003-05-23 12:28:53
想杜绝后门还是很难的

特别是大程式的话

想杜绝只能检查代码
并定制严格的惩罚制度

 人生五十年 回复于:2003-05-23 12:31:01
斑竹是不是能加精置顶?让大家看看啊 :lol:  :lol:  :lol:

 无双 回复于:2003-05-23 19:06:27
考察中.......


请多多表现

假如回帖能很有深度的话会加精华的
另外置顶我想就不用了
论坛现在的帖子又不是很多

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅