# 004.测验.情景之迷你用户验证
用户信息被拖库,是攻城狮的耻辱,也使整个行业蒙羞。
耻辱柱上,已经钉过了CSDN,小米和某些票贩子网站。
@史荣久 / 2015-01-05 / CC-BY-SA-3.0
## 任务说明
本次练习是一个迷你版的用户模块,目标是用户验证。
用户模块,最低级错误有:(1)被注入(2)存明文。
算法上,要用慢算法防强暴,要加盐防用户密码太傻。
通常的用户模块,是独立的三块,等价于以下三张表。
(1)信息表(USER_INFORMATION),存用户信息。
(2)验证表(USER_AUTHENTICATION),存验证信息。
(3)授权表(USER_AUTHORIZATION),存权限信息。
题外话:在发达地区,泄露用户信息会被法律制裁。
我们正在发展的路上,所以安全意识一定要接轨。
## 数据关系
CREATE TABLE IF NOT EXISTS `USER_INFORMATION` (
`UID` INT(11) NOT NULL COMMENT '用户ID',
`SURNAME` VARCHAR(50) NOT NULL COMMENT '姓',
`GVNNAME` VARCHAR(50) NOT NULL COMMENT '名',
`BIRTHDAY` DATE NOT NULL COMMENT '生日',
PRIMARY KEY (`UID`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
CREATE TABLE IF NOT EXISTS `USER_AUTHENTICATION` (
`LOGINID` VARCHAR(100) NOT NULL COMMENT '登陆ID',
`UID` INT NOT NULL COMMENT '用户ID(FK)',
`PASSHASH` VARCHAR(200) NOT NULL COMMENT '密码散列',
`PASSSALT` VARCHAR(100) NOT NULL COMMENT '密码加盐',
`HASHTYPE` INT NOT NULL COMMENT '散列算法',
PRIMARY KEY (`LOGINID`),
CONSTRAINT `AUTHEN_UID`
FOREIGN KEY (`UID`)
REFERENCES `USER_INFORMATION` (`UID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `USER_AUTHORIZATION` (
`UID` INT NOT NULL COMMENT '用户ID(FK)',
`ROLE` INT NOT NULL COMMENT '角色ID(FK)',
PRIMARY KEY (`UID`, `ROLE`),
CONSTRAINT `AUTHOR_UID`
FOREIGN KEY (`UID`)
REFERENCES `USER_INFORMATION` (`UID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_bin;
## 基础问题
(1)上述表,一个用户,可以有多个LOGINID么?
(2)常用的密码算法有哪些?他们各有什么特点?
(3)文中的"慢算法"指什么?如何做到防爆的?
(4)文中的"加盐"指什么?什么样的密码"太傻"?
(5)简单的"注入"有哪些?怎么防止被注入?
## 编码问题
(a)写一个计算密码强度的服务,1-100表示强度值。
(b)尽情发挥,写一个用户登陆服务(即通过验证)。
(c)尽情发挥,写一个用户注册服务。
提示:所谓服务,可以但不应该是简单的程序。
## 参考资料
[加盐密码哈希:如何正确使用(中文)](
http://blog.jobbole.com/61872/)
[加盐密码哈希:如何正确使用(英文)](
http://crackstation.net/hashing-security.htm)
----
题图:2014年圣诞节,12306明文密码及用户信息泄露,随后,此案被迅速告破。
原文:
http://www.moilioncircle.com/actions/004.quiz.case-mini-authentication.html
分享到:
相关推荐
软件测试报告 珍藏版。好用记得回复推荐哦 目 录 1. 测试概述 3 1.1. 编写目的 3 1.2. 测试范围 3 1.3. 参考资料 3 2. 测试计划执行情况 3 2.1. 测试类型 3 2.2. 测试环境与配置 4 2.3. 测试人员 4 2.4. ...
开关电源的测试验证对于保证产品质量和用户安全至关重要。它能够发现潜在的设计缺陷,如效率低、输出不稳定、电磁干扰(EMI)过大等问题,从而避免在实际应用中出现故障,影响设备的正常运行。 二、测试内容 1. ...
本实践主题为"小实践3-测试数据 - 用户行为数据-user.json/log.json",聚焦于模拟用户行为的数据,用于测试和验证应用程序的性能、稳定性和正确性。这里包含的文件有"user.json"、"log.json"、"userparquet.parquet...
Java验证AD域用户登录是企业级应用中常见的一种身份验证方式,主要用于确保只有授权的用户才能访问特定的系统或服务。AD(Active Directory)域是由微软Windows Server操作系统提供的目录服务,用于集中管理用户账户...
“基于大规模定制模式的智能+5G验证测试平台”这一标题暗示了本文档将讨论一种创新的测试平台,该平台融合了智能化技术和5G通信技术,并采用了大规模定制模式。大规模定制通常指的是根据消费者特定需求进行产品设计...
而“FetionSmart 0.9.0530迷你飞信测试版”则是飞信产品线中的一款轻量级应用,旨在为用户提供便捷、快速的通讯体验。尽管名为“迷你”,但在内存占用方面,这款测试版并未表现出明显的轻量化优势,这也是我们今天...
《测试之美-迷你版》是一本深入探讨软件测试领域的书籍,旨在揭示测试的艺术与科学,引领读者进入测试的美学世界。这本书可能包含了测试的基础概念、重要性、方法论以及最佳实践,帮助读者理解和掌握如何有效地进行...
它涉及到用户在安装和使用软件时,需要通过网络向软件提供商发送请求,验证其合法性。这个压缩包“完整版在线注册验证.e.rar”很可能包含了实现这一功能的相关代码、文档或者工具。 首先,我们需要理解在线注册验证...
描述中的"RS232-ICT004测试工具"进一步确认了这个压缩包的目的,即它提供了与RS232-ICT004设备交互和验证其功能的软件或程序。 标签"RS232-ICT004测试工具"强化了这个主题,表明内容是关于测试和调试RS232-ICT004...
### 软件测试与验证技巧 #### 第1章 软件测试与验证技巧 **一、软件测试简介** 1. **定义**: 软件测试是指在软件开发过程中,按照特定的方法和技术,对软件的功能、性能、安全性和其他特性进行检查的过程,目的是...
ASIC基本设计流程,ASIC基本设计流程,ASIC基本设计流程,ASIC基本设计流程,ASIC基本设计流程,ASIC基本设计流程,
迷你DVD管理器系统是一个基于Java和MySQL数据库技术的软件应用,主要目的是管理和组织个人或商业环境中的DVD资源。这个系统可能包含多个模块,如DVD信息录入、查询、编辑、删除以及库存管理等,旨在提高效率并优化...
在"Delphi通过网络验证用户登录(CS验证)示例"中,我们讨论的核心是客户端-服务器(Client-Server,简称CS)架构的登录验证机制。这个示例可能包含了如何在Delphi中实现一个本地客户端应用程序,该程序会通过网络与...
systemverilog编程资料,用于验证
CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)协议,它允许用户在一个地方进行身份验证后,就可以访问多个应用系统,而无需再次登录。CAS Server 5.3.9是CAS...
实验二用户登陆验证程序的设计是计算机科学和技术专业的一项重要实验,旨在验证用户的身份是否合法,并提供一个安全的登录系统。本实验报告将详细介绍实验的设计思路、实现步骤和实验结果。 一、实验背景 在计算机...
在iOS应用开发中,短信验证是一种常见的用户身份验证机制,用于确保用户提供的手机号码真实有效。这个"ios-短信验证.zip"压缩包可能包含了一个简单的iOS应用程序示例,用于演示如何集成短信验证功能。以下是对这个...
6. **测试与调试**:运行脚本并测试验证流程,确保在网络状况良好和不好的情况下都能正确执行。 通过以上步骤,你将能够使用AutoJS结合泡椒云的SDK实现网络验证功能。这个过程不仅可以提升你的AutoJS编程技巧,还能...
"5G下行CoMP技术研究及测试验证" 从文件标题、描述、标签和部分内容可以看出,这篇文档主要介绍了5G下行CoMP技术的研究和测试验证,讨论了CoMP技术在5G网络中的应用,特别是对于重叠覆盖场景的干扰问题。下面是从...