用户登录是任何一个应用系统的基本功能,特别是对于网上银行系统来说,用户登录的安全性尤为重要。如何设计一个网站的安全登录认证程序,是本文主要讨论的问题。
静态密码存在着比较多的安全隐患,***者有很多手段获得静态密码,管理密码也具有较高的成本,我在前文《中国网上银行系统安全性分析》中曾经论证过,使用硬件安全产品“动态密码锁”或者“USB Key”可以较好的解决这个问题,但是会带来加密锁的成本,在不增加硬件成本的情况下,我们也可以通过一些设计上的技巧和措施在一定程度上来保证登录者的身份。
一、客户端和服务器端的安全
客户端的安全,主要是用户密码本身的安全性(密码长度和复杂性等)以及用户电脑的安全性,包括用户电脑没有安装******软件,登录程序没有被第三方程序加载调试,用户录入框组织键盘Hook程序等等,通过一些代码即可解决。
服务器端的安全,包括服务器自身的安全(系统漏洞等等)以及程序设计上的安全,我这里主要讲一下程序设计上的安全。最基本的问题是,用户的密码不应该直接保存在服务器的数据库上,也不应该将密码用单钥算法加密后保存,最基本的认证方式是通过单向散列函数对密码进行认证。在《软件加密技术和注册机制》一文中介绍了一些单向散列函数可以实现简单的认证。目前大多数网站都使用MD5函数进行登录认证,不过我推荐使用安全性更高的SHA1散列函数来进行登录认证。
二、网络传输上的安全
目前的网络协议通过HTTP协议进行通讯,存在很大的安全隐患,***可以通过SNIFFER工具进行抓包分析网络数据包,因此用户名和密码的传输应该使用非明文的方式传输,这里就用到了“公开密钥密码”的概念。
学过基本的“密码学”的人都应该知道“公开密钥算法(也叫非对称算法、双钥算法)”这个概念,即用作加密的密钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来。
加密的传输过程分为两部分,一部分为身份认证,用户鉴别这个用户的真伪;另外一部分为数据加密,用于数据的保密。这两部分功能都需要用到非对称加密技术。
首先是身份认证,通讯的数据可以这样进行处理,将用户的信息(用户名、密码等)用该用户的私钥进行加密,然后再进行传输,而在服务器端会保存此用户的公钥,用此用户的公钥对传过来的信息进行解密,就可以得到正确的明文,这样就完成了一次安全的网络通讯。
通讯过程的示例如下图所示,Alice用自己的私钥对明文进行加密后传输到服务器,服务器上的用户(例如Bob)拥有很多用户的公钥,因此使用Alice的公钥对密文进行解密,如果密钥正确的话,就可以解密出明文,也就完成了对Alice的身份认证。
然后是数据加密,数据加密和数据认证正好相反,使用接收方的公钥对数据进行加密,传输的过程中,即使数据被***截获,也无法使用这些密文,接收方收到密文后,用自己的私钥对密文进行解密,从而完成了一次数据的加密传输。
通讯过程的示例如下图所示,Alice需要发给Bob一段加密的信息,因此Alice就用Bob的公钥对明文进行加密后传输给Bob,Bob收到信息后,使用自己的私钥对密文进行解密,就可以解密出明文,也就完成了对Alice的发来密文的解密过程。
目前的公开密钥算法主要有RSA和ECC,RSA是比较老的算法,基于大质数分解,速度较慢,ECC(椭圆曲线)是最新的公钥加密算法,基于离散对数计算,速度比RSA快,安全性据说更高一些。
当然,上面的所说的技术只是最为基本的身份认证技术,只是适合一般网站应用,对于电子商务和银行来说需要更为复杂和权威的安全认证系统。目前比较流行的是PKI技术。PKI(Public Key Infrastructure)是一种新的安全技术,它由公开密钥密码技术、数字证书、证书发放机构(CA)和关于公开密钥的安全策略等基本成分共同组成的。PKI技术已经被广泛应用于电子政务和电子商务,被证明是保证基于互联网的电子政务和电子商务安全的最佳解决方案。完整的PKI建设需要大量的资金和人力才能完成,这里就不多介绍了。

转载于:https://blog.51cto.com/liweibird/319968

网站的安全登录认证设计相关推荐

  1. 密码学-网站的安全登录认证设计

    用户登录是任何一个应用系统的基本功能,特别是对于网上银行系统来说,用户登录的安全性尤为重要.如何设计一个网站的安全登录认证程序,是本文主要讨论的问题. 静态密码存在着比较多的安全隐患,攻击者有很多手段 ...

  2. 详解比springSecurity和shiro更简单优雅的轻量级Sa-Token框架,比如登录认证,权限认证,单点登录,OAuth2.0,分布式Session会话,微服务网关鉴权

    文章目录 1. 技术选型 2. Sa-Token概述 2.1 简单介绍 2.2 登录认证 2.3 权限认证 3. 功能一览 4. Sa-Token使用 4.1 引入Sa-Token依赖 4.2 Sa- ...

  3. 【项目分享~写给应届生的一篇文章】基于Web企业招聘网站 ~~ 登录注册设计

    背景 适合人群: 应届生 推荐:可直接做为毕业设计项目,开发架构简单,按照统一的规范开发,容易上少 原因:这个项目涉及到SSM三大框架,所以刚刚入门JavaWeb的同学可能不大适合,缺少太多必备的知识 ...

  4. 【项目分享~写给应届生的一篇文章】基于Web企业招聘网站 ~~ 登录注册设计2

    背景 适合人群: 应届生 推荐:可直接做为毕业设计项目,开发架构简单,按照统一的规范开发,容易上少 原因:这个项目涉及到SSM三大框架,所以刚刚入门JavaWeb的同学可能不大适合,缺少太多必备的知识 ...

  5. Asp.Net MVC3.0网站统计登录认证的在线人数

    前言 对于一个网站来说,统计在线人数是一个很重要的工作.平时也发现很多的网站论坛等都有在线人数的显示.对于一个网站如果在线人数很多,用户看到了这么个数字也是很了不起的事情.由于之前对于这个知识点只是知 ...

  6. 登录验证应该是进行在客户端还是服务器端_网站登录认证方式

    目前大部分软件系统资源访问都是使用HTTP协议,HTTP是无状态的协议,每次请求默认都是相互独立的.但是大部分情况下我们需要记录请求资源的用户信息,也就是保存会话,从而对资源的访问做限制,这是我们认证 ...

  7. 浅析网站 APP 登录界面设计

    无论网页或是移动APP的设计,很重要的一点是如何能在小而美和功能复杂性之间找到平衡点.本文就移动APP表单设计进行浅析,看设计师是如何在设计与交互体验之间做到小而美的平衡. 一.极致的减法 这是一个异 ...

  8. Springboot + Spring Security 实现前后端分离登录认证及权限控制

    Spring Security简介 Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展 ...

  9. shiro实现APP、web统一登录认证和权限管理

    先说下背景,项目包含一个管理系统(web)和门户网站(web),还有一个手机APP(包括Android和IOS),三个系统共用一个后端,在后端使用shiro进行登录认证和权限控制.好的,那么问题来了w ...

最新文章

  1. The system cannot find the file specified
  2. 万字长文,值得收藏/参考的OpenCV C++基础代码
  3. LeetCode 829. Consecutive Numbers Sum--笔试题--C++解法
  4. 视易精通收银服务器自动关机,视易精通量贩式收银系统操作-手册3.0.doc
  5. 1.12 四类向量组
  6. PS2: 这篇文章中的图片绘图工具使用的是Dia (sudo apt-get install dia)。据说yEd也很不错。...
  7. 一分钟了解阿里云产品:弹性伸缩五大热点技术问题分析
  8. 拓端tecdat|R语言多分类logistic逻辑回归模型在混合分布模拟个人风险损失值评估的应用
  9. html js注册表单代码,用户注册常用javascript代码
  10. 【TCP/IP详解】IP报文格式
  11. 大气层整合傻瓜包_三国无双7大气层傻瓜包存档
  12. 系统服务器断电数据会丢失吗,服务器断电数据丢失恢复原理和图文过程
  13. 网络硬件三剑客的集线器(Hub)、交换机(Switch)与路由器(Router)
  14. C语言高级应用---操作linux下V4L2摄像头应用程序
  15. html5网页制作技巧,HTML5 网页制作技巧
  16. 瀑布模型的问题是什么?
  17. 撇开代码不说,谈谈我对架构的6个冷思考
  18. 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)
  19. 汉字的国标码和机内码是怎么回事?
  20. Kotlin入门笔记(二) Kotlin 函数的简单介绍

热门文章

  1. Cookie 和 Session机制具体解释
  2. 【成长之路】【python】python基础2
  3. 超酷jQuery进度条加载动画集合
  4. ELK收集日志到mysql
  5. DAppDiscover | 盘点2018年度十大DAPP
  6. 容器中运行Fabric区块链网络
  7. 专注企业市场 或是网盘危机的有效出路
  8. 程序员的生存技巧 —— 搜索技巧
  9. MySQL 存储引擎和锁
  10. 成为Linux内核高手的四个方法