提起安全性这个话题,大家恐怕依稀还记得Sony的PSP账户信息泄露的事故造成的重大损失。但是又隐隐觉得这事儿离我很远,无需过多考虑。也有的人会想,我们做的是企业内部系统所以不必太在意。但是,Web程序的安全性已经悄然来到你我身边,我们在使用的系统太多的并没有充分考虑安全性。这样的系统只是尚未发生事故。一旦发生事故后果相当严重。

轻者数据泄露,重者商业损失,更严重的导致商誉损失,甚至是企业倒闭。这绝不是危言耸听,且看看这些年来报道的安全门话题,哪个不是损失惨重?

今天就来说一说这个话题:企业应用的Web程序的安全性。

很多企业的应用程序喜欢使用Web来开发,一者开发相对简单,二者部署容易,三者升级方便。所以,Web往往成为企业应用开发的首选。但是由于是企业内部应用,只要不到互联网上就不会把安全当成一会事儿,而且,即使连到互联网上,开发的时候也不会过多考虑安全性。

功能永远在首位,其次是性能,安全~~花钱又多,又看不到效果,反正没出事儿...等等思维方式的影响下,安全话题就在企业开发中被一再搁置,成为一个极少被提及的话题。

然而,企业应用真的就可以忽略安全吗?真的就可以不必在意安全吗?

如果一套工资管理系统,查看工资的代码可以不需要权限就能够直接通过URL访问的话,工资数据就全部泄露了。

如果一套经销商管理系统,定期向经销商发送邮件的服务器并没有设置密码,那么任何人都可以通过这个服务器发送一些匿名邮件。

如果一套销售管理系统,生成订单的URL中没有验证码识别,那么一个机器人就可以生成无数的无效订单。

一套不安全的餐饮管理系统,在一个有WIFI的餐厅里,可能会被某个食客攻击。

一套不安全的生产管理系统(ERP),可能会被工厂里的一台手机控制。

现在的黑客技术越来越多,并不只是银行系统才需要安全机制,也不是加了数字证书Web应用就牢不可破了。

企业Web应用的安全问题不容忽视,也并不容易解决。

那么如何在开发的时候就能够很好地规避安全问题呢?(需求与报价阶段就应该和客户谈清楚,本文从略)

下面从几个能够被攻击的角度进行说明:

1. SQL注入

A. 采用preparedSQL的方式传递参数。

B. 避免社会学猜测,比如密码字段名不叫做password,pswd等容易被猜测的名称。

2. 垃圾数据

A. 后台对于所有的可输入项的数据进行校验,包括采用Radio和DropDown构建的组件。

3.防止URL滥用

A.明确标记GET和POST

4.防止批量删除数据

A. 采用权限校验

B.只提供每次删除一条数据的操作

5. CSRF攻击

A.在HTML代码中书写CSRF禁用代码

          <meta content="authenticity_token" name="csrf-param" />
          <meta content="<<略>>" name="csrf-token" />
 
6.WebService匿名访问
   A. WebService的每个访问都需要经过认证
   B. 每次认证需要有时效性
   C. 认证通过认证码进行
 
7.防止密码泄露
   A. 不在页面显示密码,不在隐含域,HTML注释,JavaScript中显示密码
   B. 不用明文传输密码
   C. 采用较强的密码策略
   D. 不用员工编号作为ID,或者姓名全拼、简拼的方式
   E. 每个人的初试密码不同,并采取暗文抄送的方式
   F. 不提供取回密码功能,只提供更改密码功能,通过有时效的URL进行处理
   G. 不会将密码发送到邮件中去
   H. 不要在Log中记录密码
 
8. 邮件服务器滥用
    A. 必须有用户名密码
    B. 只允许来自固定IP的访问
 
9. 数据库泄露
     A. 删除默认账户
     B. 修改数据库端口
     C. 数据库名称不容易被猜测
     D. 只允许来自固定IP的访问
 
10. 文件未经授权下载
     A. 下载文件的目录不能够通过URL直接访问
     B. 文件下载前必须经过权限认证
 

11. URL泄露

A. 没有权限操作的按钮不显示出来,并且相关的JavaScript也应该不出现

12. StackTrace泄露

A.不要为了维护方便而将Exception的StackTrace输出到页面上

企业应用的Web程序的安全性的更多相关文章

  1. Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些。

    Web应用程序的安全性问题依其存在的形势划分,种类繁多,这里不准备介绍所有的,只介绍常见的一些.  常见Web应用安全问题安全性问题的列表: 1.跨站脚本攻击(CSS or XSS, Cross Si ...

  2. 使用 Rational AppScan 保证 Web 应用的安全性,第 2 部分: 使用 Rational AppScan 应对 Web 应用攻击

    1 当前 Web 安全现状 互联网的发展历史也可以说是攻击与防护不断交织发展的过程.目前,全球因特网用户已达 13.5 亿,用户利用网络进行购物.银行转账支付和各种软件下载,企业用户更是依赖于互联网构 ...

  3. 使用 Rational AppScan 保证 Web 应用的安全性,第 1 部分: Web 安全与 Rational AppScan 入门

    前言 当今世界,Internet(因特网)已经成为一个非常重要的基础平台,很多企业都将应用架设在该平台上,为客户提供更为方便.快捷的服务支持.这些应用 在功能和性能上,都在不断的完善和提高,然而在非常 ...

  4. YbSoftwareFactory 代码生成插件【十三】:Web API 的安全性

    ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.Android设备.IOS等) ...

  5. (转)对《30个提高Web程序执行效率的好经验》的理解

    阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解 ...

  6. Web程序员开发App系列 - 申请苹果开发者账号

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  7. 发布在IIS上的Web程序,调用服务器的COM组件

    场景大致是这样的,在工厂中分布着许多的PDA点,这些PDA点都要进行实时的扫描--打印操作.实现方法是采用网络打印机,然后服务器安装驱动,管理着所有的打印机.然后服务器,发布一个WebService, ...

  8. Web API 的安全性

    Web API 的安全性 ASP.NET Web API 可非常方便地创建基于 HTTP 的 Services,这些服务可以非常方便地被几乎任何形式的平台和客户端(如浏览器.Windows客户端.An ...

  9. (11)Web程序保存状态的几种方式,Application,Session,Cookie,ViewState

    WEb程序保存状态的方式有这样几种: 1.Application:保存在Application中的数据是全局有效的:Application里面存放的应该是访问多修      改较少并且是全局至少大部分 ...

随机推荐

  1. 用Activator.CreateInstance代替new实现类的实例化(转)

    一直想得到这样一个函数,输入一个类的名称为参数,返回一个相应的类的实例. 这在工厂模式中是非常有用的 这样,可以使程序有更高的扩展性,例如,,下面的例子 如果现在有一个类,专门用来计算交通工具的速度, ...

  2. Delphi2009下编译提示“无法找到“Excel_TLB”

    这是没有安装Excel组件导致的,安装Excel组件的步骤是: 1.新建Package工程 2.在Office安装目录下找到文件XL5CHS32.OLB 我的Office版本是2007,XL5CHS3 ...

  3. html accesskey (단축키 지정)

    accesskey 속성은 마우스 등을 쓰지 않는 환경을 위해 링크나 입력 폼에서 키보드의 키 입력만으로 동작을 실행할 수 있도록 accesskey 속성값에 access 할 영어 또 ...

  4. (转载)Nim游戏博弈(收集完全版)

    Nim游戏的概述: 还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输.后来,在一份资料上看到,这种游戏称为“拈(Nim)”.据说,它源 ...

  5. PHP学习笔记 - 入门篇(3)

    PHP学习笔记 - 入门篇(3) 常量 什么是常量 什么是常量?常量可以理解为值不变的量(如圆周率):或者是常量值被定义后,在脚本的其他任何地方都不可以被改变.PHP中的常量分为自定义常量和系统常量 ...

  6. HTML5的Web SQL Database

    本文将介绍 Web SQL Database 规范中定义的三个核心方法: openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象 transaction:这个方法允许我们根据情况 ...

  7. 再说 extern "C"

    早知道 C++ 源文件中要调用C语言函数需要在函数申明时 指定extern "C": 要不然可以编译通过,但连接时提示找不到什么什么符号,原因是C和C++生成的函数名不一样,ext ...

  8. PerformSelector may cause a leak because its selector is unknown 解决方法

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3801030.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  9. 抓包分析TCP的三次握手和四次分手

    一:三次握手 三次的握手的过程是: 1.由发起方HostA向被叫方HostB发出请求报文段,此时首部中的同步位SYN=1,同时选择一个序列号seq=x.TCP规定,SYN报文(即SYN=1的报文段)不 ...

  10. 【转】oracle中触发器中:new和:old 的使用方法

    create or replace trigger TRI_PrintTest before delete or insert or update on TEST_EXAM --触发事件 for ea ...