如何处置web系统中的密码

密码,是敏感又重要的信息。对密码的处理是非常重要的。那么在web系统该如何处理密码呢?在下略有心得,备忘如下。

密码的轨迹

用户 => 应用服务器 => 数据库

从用户在客户端/浏览器输入密码到传输到应用服务器,再存储到数据库。有很多措施可以用来提高密码的安全性。

用户 => 应用服务器

用户的原始密码经过http协议传输到应用服务器。

  • 使用https

    虽然前段时间出现心血漏洞,但是并不能说https就没用了。

  • 加密传输。

    对原始密码进行单项加密可以有效提高破解成本,甚至完全杜绝渗透者获得用户的原始密码。虽然对于抓包者来说,仍然可以获得登录令牌,但至少他无法获得用户原始密码,不会把用户密码扔到社工字典里。很大程度上减少了密码泄露的损失。

    密码加密有几点需要注意:

    1. 密码的加密一定要单向加密,一方面这样加密不影响使用,另一方面也比可解密的算法破解成本更高,从而提高了安全性。
    2. 选择多个语言都可以实现的算法。毕竟web系统基本都是多端的(web,ios,android等),一定要确保所有客户端都可实现才行。
    3. 权衡加密成本。如果加密需要额外软件包,从而增加安装包体积和依赖管理复杂度的话,就要根据实际情况有所取舍。
    4. 对于JavaScript。推荐:https://github.com/evanvosberg/crypto-js

应用服务器 => 数据库

服务器到数据库这一关也同样需要加密。当然,仍然是单向加密。这样,即使数据库被爆也至少不会让用户密码公之于众。 这里就PHP语言推荐两个函数:

  • crypt()

    这个函数比较奇妙,它会根据加的盐不同而使用不同的加密算法。这对破解者来说着实是个噩梦,不仅要破解算法,还要破解盐。

  • password_hash

    这是PHP 5.5开始增加的密码加密专用函数。如果生产环境已经使用PHP 5.5了,还是推荐使用这个函数。

时间: 2024-10-29 19:06:54

如何处置web系统中的密码的相关文章

B/S(WEB)系统中使用Activex插件调用扫描仪实现连续扫描并上传图像(IE文件扫描并自动上传)

IE浏览器下使用Activex插件调用客户端扫描仪扫描文件并山传,可以将纸质档案(如合同.文件.资料等)扫描并将扫描图像保存到服务器,可以用于合同管理.档案管理等. 通过插件方式调用扫描仪扫描并获取图像,可以减少用户操作,减少操作出错,如一次扫描量大也可以使用连续扫描,由系统对扫描文件进行编号或进行其他处理. web页面中只需通过js调用后启动扫描仪扫描,即可获取扫描文件的图像编码,再通过ajax或表单提交到服务器解码后保存为jpg文件即可. 通过服务器上程序处理后,可以方便以后浏览或去其它用户

如何在施工物料管理Web系统中处理大量数据并显示

最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大,而且性能很差简直无法忍受.后来使用了矩表控件非常好的解决了需求,本文主要介绍之前如何通过代码将数据展现在页面中,以及使用矩表控件创建行列转置和动态列表格,并显示在网页中. 一.通过代码将数据展现在页面的步骤 1.行列转置代码片段: public static DataTable GetCrossT

web系统中ACL, RBAC等鉴权系统的异同

ACL, 强调面向资源, 描述对具体资源对象的操作鉴权, 有诸如Zend_ACL(好用), symfony-acl(不好用)等实现 应用场景如:对一条帖子资源的增删改鉴权, 整个鉴权流程中, 权限部分是由具体帖子对象和增删改等操作共同构成的.授权的结果是将 "资源---操作" 组合授权给用户. RBAC,强调面向角色的权限节点鉴权, 描述对功能节点的鉴权,有诸如ThinkPHP-RBAC, sylius/rbac-bundle(symfony)等实现 应用场景如: 依据不同用户角色显示

linux系统中修改密码报错的问题

1.mysql密码报错的原因 报错信息 ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 原因:原来MySQL5.6.6版本之后增加了密码强度验证插件validate_password,相关参数设置的较为严格.使用了该插件会检查设置的密码是否符合当前设置的强度规则,若不满足则拒绝设置. 解决:1.该问题其实与mysql的validate_password_policy的值有关. 2

web测试中的测试点和测试方法总结

测试是一种思维,包括情感思维和智力思维,情感思维主要体现在一句俗语:思想决定行动上(要怀疑一切),智力思维主要体现在测试用例的设计上.具有了这样的思想,就会找出更多的bug. 一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符"~!@#¥%--&*?[]{}"特别要注意单引号和&符号.禁止直接输入特殊字符时,使用"粘贴.拷贝"功能尝试输入. (2)长度检查:最小长度.最大长度.最小长度-1.最大长度+1

针对web系统的常用测试方法

针对web系统的常用测试方法如下: 1. 页面链接检查: 每一个链接是否都有对应的页面,并且页面之间切换正确.可以使用一些工具,如LinkBotPro.File-AIDCS.HTML Link Validater.Xenu等工具.LinkBotPro不支持中文,中文字符显示为乱码:HTML Link Validater只能测试以Html或者htm结尾的网页链接:Xenu无需安装,支持asp.do.jsp等结尾的网页,xenu测试链接包括内部链接和外部链接,在使用的时候应该注意,同时能够生成htm

亿级Web系统搭建——单机到分布式集群

原文转自:http://kb.cnblogs.com/page/509402/ 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制.在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决. Web负载均衡 Web负载均衡(Load Balancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰

web系统高速发展时的海量数据技术架构

当一个web系统的用户不断增长时,其数据量也会随之飞速增长.当数据量达到一定级别后,如数据表已达亿或十亿级别,系统会涉及到一些容量.性能以及分布式方面的问题.此时如在使用Oracle,它也会出现瓶颈,如逻辑读写非常高.CPU一度飙升到四五十.对数据请求不断延时(体现在TPS和QPS不断下降).数据容量的扩展性差等. 使用MySQL集群是一个很好的解决办法,因为这样,通过线性地增加机器就可以满足使用要求.将Oracle的数据拆分到MySQL集群上.这样的一个过程涉及到分库分表操作.有水平拆分和垂直

亿级Web系统搭建:单机到分布式集群【转】

当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制.在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决. Web负载均衡 Web负载均衡(Load Balancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的Web服务器来说,非常重要. 负载均衡的策略有很