看好你的门-确保验证机制的安全(2)-安全处理敏感信息

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考。

1、 前提

执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标。比如易用性、成本、还有功能。

我们需要综合考虑下面这些因素:

系统所提供功能的安全程度;

用户对不同类型的验证控制的容忍和接受程度;

支持一个不够友好的界面需要的整体成本(便捷和安全往往是一个事物的两个方向)

系统所保护的信息或者资产的价值。

2、 安全处理敏感信息

一些基本要求,写下来,以后也可以参考。

1. 使用公认的加密技术(比如SSL)保护客户端和服务器之间的所有通信;

2. 一般不需要使用特定的方案保护数据的传输;

3. 如果有条件的话,从加载登陆表单就开始用https,而不是在提交信息的时候才使用https;

4. 只能使用post方式向服务器提交敏感信息。绝不能将敏感信息放在URL参数或者cookie中;

5. 绝不能将敏感信息还给客户端,即使是重定向传参数也不行;

6. 敏感信息的存储,要做好最坏的准备。如果攻击者能够访问应用程序数据库中所有数据,也不能轻易恢复这些敏感信息的原始值,比如使用SHA-256函数。 (堡垒往往容易从内部被攻破的);

7. 一般来说,“记住我”功能应该只能记忆用户名这种非保密数据,但是现在为了进一步提高用户友好性,越来越多的密码存放在“记住我”的cookie中,于是又提升了支付密码和其他密码的重要性…

8. 定期修改密码(但是也有论文说这个无效,见仁见智吧)

9. 对一些特殊要求的新建账户发送敏感信息(批量创建用户之类),要用尽可能安全的形式传送,并设置时间限制(客户端和服务器端都要设置),要求用户在第一次登陆的时候更改密码(客户端要提示,服务器要有逻辑执行),并告诉用户删除这些敏感信息(虽然大部分情况下没用,但是万一有用呢?)

10. 如果对安全性要求足够高的地方,可以使用软键盘或者其他的可变动的方式;但是话又说回来,如果攻击者已经攻破用户的计算机,理论上来说,他就可以记录计算机上的任何事情,比如鼠标活动,HTTPS表单等各种行为。

时间: 2024-12-16 06:52:40

看好你的门-确保验证机制的安全(2)-安全处理敏感信息的相关文章

看好你的门-确保验证机制的安全(5)-防止滥用密码修改和密码找回功能

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 前提 执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标.比如易用性.成本.还有功能. 2. 防止滥用密码修改的基本要求 一些基本要求,写下来,以后也可以参考. 1. 加一个简单图片验证码,基本确保是人在操作,而不是机器: 2. 只能从已经通过验证的会话中访问该功能: 3. 不要以任何方式直接提供用户名,也不要使用隐藏表单字段或者cookie提供用户名:

看好你的门-确保验证机制的安全(3)-正确处理验证信息

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 前提 执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标.比如易用性.成本.还有功能. 2. 正确处理验证信息的基本要求 一些基本要求,写下来,以后也可以参考. 1. 要确认完整的用户名和密码等信息:也就是说,要区分大小写,不过滤或者修改任何字符,不添加也不截断密码: 2. 应用程序要在处理验证信息的过程中,主动防御无法预料的时间.重要的是,如果系统无法

看好你的门-验证机制被攻击(2)-JAVA蛮力攻击登陆

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 攻城的时候,城门总是最容易被攻破的地方. 而登陆功能的公开性,让无数的攻击者都试图猜测用户名和密码,从而获得未授权访问系统的权利. 这种攻击几乎无处不在,有系统的攻击,也有无聊人士的攻击,设置一些搞错了用户名用户的无聊尝试. 2. 前提和准备 我们首先需要有一个弱密码的系统,这样才可以去尝试蛮力攻击. 不要用这种方法去攻击第三方的应用,这是不道德和不友好的行为.分享这种方法,

看好你的门-验证机制被攻击(5)-“记住我”功能的常见漏洞

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 当我们登陆某个网站时,在登陆的旁边会有一个"记住我" 的复选框,这个登陆时的用户名和密码 就是一种状态,这个记住我是怎么实现的呢?其实就用利用的是cookie,当我们选择了"记住我"以后,浏览器会将用户名保存在浏览器的cookie中,我们下次登陆的时候,就会自动的去找cookie了. 浆糊传说:这种漏洞在非常多的大互联网公司中都出现过.不经历过惨

看好你的门-客户端传数据(10)-不安全的HTML禁用元素

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 继续说故事,某一天产品经理策划了一个方案,要搞一个促销.一个用户最多只能用一次鸡蛋优惠券. 开发人员需要对系统进行修改和调整. 让我们脑补一下,传统行业搞互联网电商的场景: 产品经理:赶快改,赶快上,赶快搞活动 运维经理:版本升级,提交上线评估报告,风险测试报告,系统测试报告,各位负责领导签字文件--: 开发人员A:靠,老子一早从9点干到晚上9点,还要老子去写那么多报告,让我

看好你的门-客户端传数据(2)-URL参数

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 应用程序通常以终端用户无法直接查看或者修改的方式向服务器传送数据.很多的时候,开发者都优先考虑实现基本效果,而很少去考虑我们所采用的传输机制能够确保数据在传输过程中不会被修改. 在互联网中,大量的数据通过URL参数的方式进行传递,大部分的数据,是没有通过加密进行传输.在我所了解到的情况,大部分的数据是通过明码进行- 2. 优点: 不用追踪用户会话中的数据,减少保持在服务器上的

看好你的门-客户端传数据(3)-http信息头

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考,请勿用与非法用途. 1. 简单说明 在互联网中,大量的数据通过URL参数的方式进行传递,大部分的数据,是没有通过加密进行传输.在我所了解到的情况,大部分的数据是通过明码进行- 当然,现在大家都知道,URL参数,安全性不是特别高,于是http信息头(包含referer等属性)进入了大家的视野. Referer用来表明,浏览器向 WEB 服务器表明自己来自哪里. 2. 观点: 不知道从什么时候起,

通过扩展改善ASP.NET MVC的验证机制[使用篇]

原文:通过扩展改善ASP.NET MVC的验证机制[使用篇] ASP.NET MVC提供一种基于元数据的验证方式是我们可以将相应的验证特性应用到作为Model实体的类型或者属性/字段上,但是这依然具有很多的不足.在这篇文章中,我结合EntLib的VAB(Validation Application Block)的一些思想通过扩展为ASP.NET MVC提供一种更为完善的验证机制.[源代码从这里下载] 目录: 一.扩展旨在解决怎样的验证问题 二.一个简单的消息维护组件 三.多语言的支持 四.基于某

通过扩展改善ASP.NET MVC的验证机制[实现篇]

原文:通过扩展改善ASP.NET MVC的验证机制[实现篇] 在<使用篇>中我们谈到扩展的验证编程方式,并且演示了本解决方案的三大特性:消息提供机制的分离.多语言的支持和多验证规则的支持,我们现在来看看这样的验证解决方案最终是如何实现的. 目录: 一.为验证创建一个上下文:ValidatorContext 二.通过自定义ActionInvoker在进行操作执行之前初始化上下文 三.为Validator创建基类:ValidatorBaseAttribute 四.通过自定义ModelValidat