浅议应用程序安全性

     在继续SQL系列文章之前,由于工作所系想和大家交流一下怎么提高应用程序的安全性,大家在项目中都对程序做了哪些安全措施?如何让自己的代码深深的打上自己的版权,如果防止他人恶意的使用,或偷窥系统内部实现,数据安全,代码可控的运行。这些东西一直没找到确实可行的的方法,特将个人的一些观点和目前项目中的应用拿出来分析,更重要的期望大家在此交流各自的好的方案,互补互学。

加密关键信息

     对于任何项目,明文的数据传输,就如同一摞RMB放在马路上,谁想取就可以取。这点安全性大家在日常的项目中都会经常使用。大家常用的都是对称加密DES,通用的算法很多可以直接使用,需要保证的就是密钥的安全。对称加密比较高效,使用双方公用一个密钥。相比非对称密钥一对密钥对更方便易用。相关的内容可以查看对应详细的介绍。

系统实现中授权验证权限管理

     此实现完全看自己的代码书写和相关逻辑,可以采用基于Windows授权,Active Directory,自定义等多种策略。

混淆代码

      此方法好多人使用的不多,伴随着各种反编译工具的涌现,代码安全岌岌可危。一定程度的混淆可以提高代码的安全性,关于这块其实我也有很多需要和大家沟通的地方。

  • 混淆工具也不少,大家常用的都是哪些,哪个程度级别的混淆。
  • 自己书写的dll,如果防止他人通过动态加载dll进行调用
  • 目前的web项目,大家都倾向于jquery的通用性和易用性,调用web服务,安全性何在?如何保证你调用的web服务,别人无法调用?
  • js的客户端执行,势必导致js裸露在客户眼下,除了压缩js,还有什么有效提高js防止查看的方法?大家的js压缩都是什么级别?
  • 在架构项目时,js交互后台是不是就意味着安全毫无保证,应该摒弃?

数字证书和签名

      安全性稍高的项目中,这个应用也会被经常用到,可以使用微软工具生成一个.cer,.pfx证书,在X509标准的基础上,破解的可能性微乎其微。

第三方硬件

    这个大家在使用银行U盾等设备上,可见一般,安全性大大提高,相关密钥等信息完全存储在独立的介质上,物理隔离。

专用通道

     如果允许可以考虑专一的传输通道也就是专用网络和其它互联网隔离,少了外来纷乱的数据和威胁,安全性大大提高,但这些在一般企业不太现实,单独布网成本巨大。可以考虑VPN的建设也不失为一个好方法。

 

      以上所列仅仅列出对应的方法,详细对照内容可以具体查相关资料,操作起来都不很麻烦。其实应用程序的安全性,真是个大问题,一直以来致力于寻找所谓的安全,大家有什么好方法,交流一下。

 

 

posted @ 2012-05-24 10:56 Wendy 's 阅读(...) 评论(...) 编辑 收藏