`

身份认证设计的基本准则

 
阅读更多

身份认证设计的基本准则

密码长度和复杂性策略

密码认证作为当前最流行的身份验证方式,在安全方面最值得考虑的因素就是密码的长度。一个强度高的密码使得人工猜测或者暴力破解密码的难度增加。下面定义了高强度密码的一些特性。

1)密码长度

对于重要的应用,密码长度最少为6;对于关键的应用,密码长度最少为8;对于那些最关键的应用,应该考虑多因子认证系统。

2)密码的复杂度

有的时候仅有长度约束是不够的,比如说1234567811111111这样的密码,长度的确是8位,但极容易被猜测和字典攻击,所以这时候就需要增加密码复杂度。下面列举了一些提供复杂度的策略。

— 至少一个大写字母(AZ)。

— 至少一个小写字母(az)。

— 至少一个数字(09)。

— 至少一个特殊字符(!@#$%^&等)。

— 定义最少密码长度(如8个字符)。

— 定义最长密码长度(如16个字符)。

— 不能出现连续的字符(如123abcdef)。

— 不能出现连续相同的字符(如1111)。

一旦我们定义好了这些策略,在用户注册时就可以强制用户输入高强度的密码,从而提高密码的安全性。

实现一个安全的密码恢复策略

上一节介绍了密码的长度和复杂度,有时,太复杂的密码自己都给忘记了,该怎么办?所以一般来说,一个应用会提供密码恢复功能。鉴于大部分应用都提供了电子邮箱这具有唯一性字段的恢复方式,所以可见最常见的方式就是让用户输入电子邮箱,输入电子邮箱后,一般会有以下两种解决方法。

1)把原来的密码发送到用户信箱中去。

我个人的意见是,如果这样做,说明这个应用可以得知你的密码明文,这与系统只存hash/加密值的单项策略相违背,若哪一天这个程序的数据库被攻克,所有的明文就会被很容易地得知,所以这种方式还是不值得提倡。

2)重设一个临时密码,用户用这个密码登录然后修改密码。

这是一个相对较好的方法,通常为了增加安全性,我们还可以给这个临时密码一个有效期,如用户必须24小时内使用这个密码登录等。

上面的密码恢复策略是基于一个事实的,就是你的电子邮箱应该足够安全(没有人知道你的邮箱密码)。但是如果这个应用具有CSRF漏洞,即电子邮件可能被修改成一个攻击者的邮箱而受害者却毫无所知,这时候如果进行密码恢复就会把密码发到攻击者的信箱里,那么该怎么办呢?

答案是更新重要字段时需要重新认证。比如用户的密码、电子邮件等,如果用户需要更新,则弹出一个对话框让用户输入原先的密码,这样就可以有效地防止CSRF攻击。

重要的操作应通过HTTPS传输

对于重要的操作,如登录、修改密码等,一定要通过HTTPS进行传输。我们就以Tomcat为例,说明一下如何进行配置,使得指定的URL必须走HTTPS

首先是产生一个证书。为了说明方便,我们采用Java提供的keytool产生一个自认证证书,命令如下:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA。然后回答一些问题,这里注意设置证书库的密码和key的密码,我们这里设置为changeit,这样就会产生一个证书库,如图10-22所示。

10-22  Java生成一个证书库

后在把产生的.keystore复制到{TOMCAT_HOME}\conf目录下,配置server.xml如下:

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"

           port="8443" SSLEnabled="true"

maxThreads="150" scheme="https" secure="true"

clientAuth="false" sslProtocol="TLS"

keystoreFile="${user.home}/.keystore"  keystorePass="changeit" />

—   最后我们再配置APP应用下的WEB-INF\web.xml如下:

<security-constraint>

    <web-resource-collection>

        <web-resource-name>must https</web-resource-name>

        <url-pattern>/login.jsp</url-pattern>

    </web-resource-collection>

    <user-data-constraint>

        <transport-guarantee>CONFIDENTIAL</transport-guarantee>

    </user-data-constraint>

</security-constraint>

设置哪些URL 需要走HTTPS

认证错误信息以及账户锁定

下面是一些不正确的认证错误信息:

— 登录失败,用户Kevin的密码错误。

— 登录失败,无效的用户名。

— 登录失败,该用户已被禁用。

— 登录失败,该用户没有被激活。

正确的表达方式应该是唯一的一种:

— 登录失败,用户名或密码错误。

不正确的认证错误信息可能会导致字典攻击或者暴力破解,所以我们要尽可能地给出一个很普遍的错误信息。

此外为了防止暴力攻击,我们可以设定下列规则:

— 第一次登录失败,下一次登录至少间隔5s

— 第二次登录失败,下一次登录至少间隔15s

— 第三次登录失败,下一次登录至少间隔45s

— 第四次登录失败,集成图形验证码CAPTCHA,让用户输入图片中的字符串。

如果有足够明显的证据显示是暴力破解(如每分钟进行了100次尝试),IP地址或者Session ID应该在接下来一段时间(如15分钟)被阻止,在这种情况下,我们应该给出清楚明白的错误信息,说明为什么这个登录会失败。

 

本文节选自《Web应用安全威胁与防治——基于OWASP Top 10ESAPI



 

王文君  李建蒙 编著

电子工业出版社出版

 

 

 

  • 大小: 231.5 KB
0
3
分享到:
评论

相关推荐

    校园网络安全防御系统的设计与实现(论文+源码)-kaic.doc

    目 录 摘 要 目 录 引 言 第1章 校园网络安全技术概述 1.1 校园网络技术发展 1.2 校园网络安全技术...3.3.1 方案设计的基本原则 3.3.2 方案设计结构 第4章 网络安全防御系统的实现 4.1 物理防护的实现 4.1.1 制定完善

    ASP.NET设计模式-杨明军译(源码)

    那些以前已经体验过设计模式的读者可能希望跳过本书的第ⅰ部分,这部分介绍了gof提出的设计模式以及其他常见设计原则,包括s.o.l.i.d原则和martinfowler的企业设计模式。所有的代码示例均采用c#语言编写,但这些概念...

    基于JAVA JSP企业电子投票系统的设计与开发的毕业设计,开发工具为Eclipse,数据库管理系统为MySQL,使用JSP和S

    本系统的设计和开发将遵循软件工程的基本原则,包括模块化、可重用性、可扩展性、可维护性等。 预计本毕设将在两个月内完成,具体时间表如下: - 第一周:系统需求分析和设计 - 第二周至第五周:系统开发和测试 - ...

    管理系统+ASP.NET实战+项目实战+网上选课系统完整项目

    开发背景:随着教育改革的深入,高校教务管理面临选课工作的挑战,传统的手工操作效率低且易出错,因此迫切需要一个...部署与测试:系统部署图展示了系统的结构,模块测试验证了系统功能,包括不同身份用户的登录和导航

    基于Springboot体质测试数据分析及可视化设计.zip

    1、关于体质测试数据分析及可视化设计的基本要求 (1)功能要求:可以管理首页、个人中心、学生管理、教师管理、日常运动管理、运动分析管理、成绩信息管理、论坛管理、系统管理等功能模块。 (2)性能:在不同操作...

    TCP网络门禁系统设计方案.docx

    当人员出入时,需持员工卡在读卡器上进行读卡,读卡器将读取旳身份卡信息传送给门禁主机,在验证身份卡信息旳合法性候,判断与否发出开门指令。在开门旳同步,门禁主机将员工人员身份信息、日期、时间等数据储存以供...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

    Eclipse开发入门与项目实践 源代码

    9.2.1 设计原则 298 9.2.2 运行架构 299 9.3 模块划分及界面设计 300 9.3.1 模块划分 300 9.3.2 界面设计 301 第10章 Shopping Online网上购物系统实现 310 10.1 系统设计 310 10.1.1 需求分析 310...

    计算机网络系统设计方案(2).doc

    1.5 高集成性原则 在本项目的设计中集成了安全认证系统、知识管理、知识挖掘、可视化工作流、集 成通讯、网络防下载、访问控制、数据仓库等高新技术。针对学校用户的不同要求,在 具体分析的基础上设计系统的解决...

    移动信息安全方案设计与探讨.doc

    第二、区域防护原则:根据移动应用数据的处理和传输过程,对其进行物理和逻辑多 层次区域防护,以满足国家信息系统安全等级三级保护基本要求。 第三、统一规划、分布实施原则:规划统一的移动应用平台安全方案,...

    应急管理系统平台方案设计.doc

    50 4.10.1 统一身份认证和单点登录 50 4.10.2 发布容管理 50 4.10.3 统一权限管理 51 4.10.4 应用程序集成 52 4.10.5 信息展示 52 4.11 应用支撑平台设计 53 4.11.1 地理信息服务 53 4.11.2 工作流服务 53 4.11.3 ...

    旅游管理系统数据库设计(2).doc

    采用B/S结构的计算机应用系统的基本框架如下图所示: 3.2软件支撑环境及开发工具 本设计的支撑环境是WINXP、VS环境,开发工具是SQL。 4.系统总体结构 4.1 总体DFD 消费者先进行登记操作,产生登记信息数据,经过处理...

    ASP.NET4高级程序设计(第4版) 3/3

     《ASP.NET 4高级程序设计(第4版)》是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的建议。书中还深入讲述了其他ASP.NET图书...

    KVM监控管理系统设计方案精品.docx

    机房KVM监控管理系统通过如下技术手段来实现密文传播: 采用1024/2048位RSA非对称算法,有效保证身份认证体系旳安全性和会话密钥传播旳保密性;采用MD5摘要算法,保护数据传播过程旳完整性;采用128 bit AES加密...

    基于Android的毕业论文管理系统的设计与研究.docx

    三、各模块的设计 (一)用户管理模块的设计 用户管理模块:该模块主要包含了用户的添加及删除、基本资料修改和个人信息主页,也是对本系统用户的信息的统一管理,实现登录等操作的必备模块。 基于Android的毕业...

    网络工程师考试考点分析与真题详解.网络设计与管理篇

    193 7.12.1 负载均衡概念 193 7.12.2 传输链路聚合 194 7.12.3 带均衡策略的服务器集群 194 7.12.4 高层交换 194 7.12.5 Web内容智能交换技术 194 7.13 电子身份认证 196 7.13.1 电子身份认证 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part2

    193 7.12.1 负载均衡概念 193 7.12.2 传输链路聚合 194 7.12.3 带均衡策略的服务器集群 194 7.12.4 高层交换 194 7.12.5 Web内容智能交换技术 194 7.13 电子身份认证 196 7.13.1 电子身份认证 ...

    网络工程师考试考点分析与真题详解.网络设计与管理篇.part4

    193 7.12.1 负载均衡概念 193 7.12.2 传输链路聚合 194 7.12.3 带均衡策略的服务器集群 194 7.12.4 高层交换 194 7.12.5 Web内容智能交换技术 194 7.13 电子身份认证 196 7.13.1 电子身份认证 ...

    门禁及考勤系统设计方案.doc

    门禁及考勤系统设计方案 目录 第一章方案的提出2 第二章系统概述、设计原则和功能特点2 2.1 系统概述2 2.2 设计原则2 2.3 主要设计依据规范3 第三章门禁系统结构和配置3 3.1 功能管理结构模式3 3.2 系统的功能和特点...

Global site tag (gtag.js) - Google Analytics