对于 Web 应用程序,安全登录是很重要的。但是目前大多数 Web 系统在发送登录密码时是发送的明文,这样很容易被入侵者监听到密码。
要实现安全登录,可以采用下面两种方法,一种基于非对称加密算法,另一种基于 hmac 算法
。
非对称加密算法中,目前最常用的是 RSA 算法和
ECC(椭圆曲线加密)算法。要采用非对称加密算法实现安全登录的话,首先需要在客户端向服务器端请求登录页面时,服务器生成公钥和私钥,然后将公钥随登
录页面一起传递给客户端浏览器,当用户输入完用户名密码点击登录时,登录页面中的 JavaScript
调用非对称加密算法对用户名和密码用用公钥进行加密。然后在提交到服务器端,然后服务器端利用私钥进行解密,然后跟数据库中的用户名密码进行比较,如果一
致,则登录成功,否则登录失败。
看上去很简单,但是这里有这样几个问题。目前 RSA 算法中,1024-2048
位的密钥被认为是安全的。如果密钥长度小于这个长度,则认为可以被破解。但这样的长度超过了程序设计语言本身所允许的数字运算范围,需要通过模拟来实现大
数运算。ECC 算法的密钥长度要求比 RSA 算法要低一些, ECC 算法中 160 位的密钥长度被认为与 RSA 算法中 1024
位的密钥长度的安全性是等价的。虽然仍然要涉及的模拟大数运算,但 ECC 算法的密钥长度的运算量还算是可以接受的,但是 ECC 算法比 RSA
算法要复杂的多,因此实现起来也很困难。
对称加密算法比非对称加密算法要快得多,为什么不采用对称加密算法呢?
因为对称加密算法需要数据发送方和接受方共用一个密钥,因此如果要在 Web
系统的发送方也就是客户端浏览器对密码进行加密的话,就需要先从服务器端获取密钥,但密钥的传递可能会被监听,加密以后的数据如果也被同时监听到的话,入
侵者就可以直接利用监听到的密钥来对加密后的信息进行解密了。
但是如果我们不采用加密算法而采用散列算法对登录密码进行处理的话,可以避免被直接解密出原文,但是如果直接采用 MD5 或者 SHA1
来对登录密码进行处理后提交的话,一旦入侵者监听到散列后的密码,则不需要解密出原文,直接将监听到的数据提交给服务器,就可以实现入侵的目的了。而且,
目前 MD5 算法已被破解,SHA1 算法则被证明从理论上可破解,就算采用离线碰撞,也可以找出与原密码等价的密码来。所以直接采用 MD5 或者
SHA1 来对密码进行散列处理也是不可行的。
但是如果在散列算法中加入了密钥,情况就不一样了。hmac 算法正好作了这样的事情,下面我们来看看如何用 hmac 算法实现安全登录
。
首先在客户端向服务器端请求登录页面时,服务器端生成一个随机字符串,连同登录页面一同发送给客户端浏览器,当用户输入完用户名密码后,将密码采用
MD5 或者 SHA1 来生成散列值作为密钥,服务器端发送来的随机字符串作为消息数据,进行 hmac
运算。然后将结果提交给服务器。之所以要对用户输入的密码进行散列后再作为密钥,而不是直接作为密钥,是为了保证密钥足够长,而又不会太长。服务器端接受到客户端提交的数据后,将保存在服务器端的随机字符串和用户密码进行相同的运算,然后进行比较,如果结果一致,则认为登录成功,否则登录失败。
这里客户端每次请求时服务器端发送的随机字符串都是不同的,因此即使入侵者监听到了这个随机字符串和加密后的提交的数据,它也无法再次提交相同的数据通过验证。而且通过监听到的数据也无法计算出密钥,所以也就无法伪造登录信息了。
因此目前来看,用 hmac 算法来实现安全登录系统的方法是最可行的。
hurlant
在安全方面似乎研究颇深,他的As3 Crypto Framework
很好的扩展了Adobe的crypto lib,前面提到的RSA、MD5、SHA等算法皆包含在此lib中。当然我最感兴趣的还是HMAC算法。
As3 Crypto Demo
browse the source
, download the source
or download the SWC binary
附件是原代码及swc文件。
分享到:
相关推荐
【FLEX图片分割系统】是一种专门用于项目安全的图像处理工具,它采用了FLEX技术来实现图片的高效分割。FLEX,全称Flexible Layout Engine,通常是指Adobe Flex,这是一个用于构建富互联网应用程序(RIA)的开源框架...
`cfw-flex` 是一个基于J2EE架构并采用Flex技术的通用系统框架,专门设计用于构建企业级应用。它集成了登录验证、主页面展示、功能导航以及精细的权限管理控制,旨在提高开发效率,同时提供用户友好的界面和安全的...
通过深入研究Flex实例股票交易系统,开发者不仅可以掌握Flex开发技术,还能了解到金融应用开发中的常见问题和解决方案,为实际项目开发积累宝贵经验。同时,这个系统也可以作为教学材料,帮助学习者快速上手Flex编程...
#### 五、Flex 验证器的局限性及解决方案 - **验证结果管理**:Flex 验证器虽然可以自动执行验证逻辑,但缺乏一个明确的、可绑定的属性来表示验证结果,这使得验证结果的管理和显示变得较为困难。 - **多验证器协调...
2. Intelli-FLEX系统设计 对于400米长的围界,Intelli-FLEX系统将防区划分为100米一段,共4个防区。每个防区使用100米的铠装振动电缆,可以保护高达2.5米的围网。每两个防区共用一个双防区的振动电缆信号处理器,...
总结来说,XYZP档案管理系统是Flex和Java技术的完美融合,它将前沿的前端技术和稳定的后端架构相结合,为企业提供了高效、安全的档案管理解决方案。无论是对于日常的文档操作,还是对于复杂的工作流程,XYZP都能够...
在实际开发中,Java负责处理业务逻辑、数据存储和安全控制,而Flex则专注于用户界面的设计和用户体验。例如,Flex可以创建丰富的图表、表单和动画,Java则在后台执行数据查询、计算和事务处理。两者通过上述集成方式...
综上所述,克服Flex安全沙箱限制的视频像素信息采集存储涉及对Flex框架的理解、合理的API使用、跨域策略配置、多线程处理以及选择合适的存储方案。在实际开发中,开发者需要在保证安全性和功能性的平衡点上找到最佳...
"基于Flex和Java的Web文件管理系统的设计与实现" 基于Flex和Java的Web文件管理系统是指使用Flex和Java技术设计和实现的Web文件管理系统。本系统解决了Web用户文件管理中的一系列问题,提供了友好的用户界面,具有...
这种技术融合了Adobe Flex的用户界面设计优势和Java的后端处理能力,提供了一种高效、灵活且功能丰富的应用开发解决方案。以下是对给定文件中涉及的知识点的详细说明: 1. **Flex**:Flex是由Adobe开发的一种开源...
本书将提供一系列解决方案来确保应用程序能够在不同的操作系统和设备上正常工作。 **性能优化策略**:性能优化是提高用户体验的关键因素之一。本书将介绍如何通过优化代码、减少网络延迟和合理利用缓存等手段来提升...
Flex地图编辑技术主要涉及到使用Adobe Flex这一开源框架与Esri的ArcGIS Server相结合,实现对地理信息系统的交互式编辑功能。在GIS应用中,地图编辑是核心部分,它允许用户创建、修改和管理地理空间数据。下面将详细...
在工业液压、流体动力领域,HANSA-FLEX的产品和服务覆盖了从设计到安装的全过程,确保了系统的安全性和效率。本文将基于“HANSA-FLEX hoses”这一主题,深入解析其产品特性、应用范围以及相关的技术细节。 ### 压力...
综上所述,"flex+java权限管理系统"是一个集成了Flex前端技术、Java后端框架的权限管理解决方案,通过合理的架构设计和配置,实现了高效、安全的权限控制。理解并掌握这个系统的配置和实现,对于提升企业级应用开发...
总结,Flex CMS合同应用是一个集成了Flex前端技术和Java后端服务的开源内容管理系统,专为合同管理设计。它提供了丰富的功能,如合同的创建、审批、检索等,并具备良好的可扩展性和安全性,是企业优化合同管理流程的...
标题 "PureMVC+Flex+Jsp+Mysql实现用户登录注册" 描述了一种基于特定技术栈构建用户登录注册系统的方案。这个系统利用了多种技术来完成前端、后端以及数据库交互的功能。以下是这些技术及其在系统中的作用: 1. **...
IBM Flex System 提供了一种简化的IT管理体验,从系统架构到解决方案生态链,都能够实现集中式的管理。这种简化不仅体现在管理界面上,还包括整个IT流程的简化,使得IT团队可以更加专注于创新而非繁琐的日常维护。 ...
总结,"flex + java开发的信息系统"是一个结合了前端展示和后端处理的有效解决方案。通过学习和实践这个项目,Flex初学者不仅可以掌握Flex4的UI设计和Java服务器的交互,还能深入了解企业级应用的开发流程和最佳实践...
文章中的原型系统设计,充分利用了ArcGIS Server强大的GIS服务能力、Flex的RIA构建能力和J2EE的平台优势,旨在实现一个集软件架构设计和关键流程实现于一体的城市服务信息查询系统。系统的核心目标是提高信息查询的...