2005-07-15
为了解决固定口令的诸多问题,安全专家提出了一次性口令(OTP:One Time Password)的密码体制,以保护关键的计算资源。
OTP的主要思路是:在登录过程中加入不确定因素,使每次登录过程中传送的信息都不相同,以提高登录过程安全性。例如:登录密码=MD5(用户名+密码 +时间),系统接收到登录口令后做一个验算即可验证用户的合法性。
考虑到存在数据库中的密码是经过MD5加密的,我们可以采用下面这种方式来处理:
考虑到时间限制,我们可心要求用户在输完自己的用户名和密码之后,输入当前时间的分钟在他提交表单时,我们把服务器的分钟存入session。
我们在获得密码后,先取出密码的后两位,还就是用户输入的分钟,然后分别对用户输入的密码和分钟进行MD5加密,再从数据库中取出已用MD5加密的密码并把session中存的时间用MD5加密,最后就是比较了。
这里有个麻烦的地方,就是服务器上的时间得和客户端的时间对应起来,这是不可能的。所以我们只能取其中一个时间,要么是服务端的时间,要么是客户端的时间。需要在页面上动态显示服务器的时间,或者如果能通过服务器端环境变量获得客户端的时间也能解决这个问题。
如非注明转载, 均为原创. 本站遵循知识共享CC协议,转载请注明来源
FEATURED TAGS
css
vc6
http
automake
linux
make
makefile
voip
乱码
awk
flash
vista
vi
vim
javascript
pietty
putty
ssh
posix
subversion
svn
windows
删除
编译
多线程
wxwidgets
ie
ubuntu
开源
c
python
bash
备份
性能
scp
汉字
log
ruby
中文
bug
msn
nginx
php
shell
wordpress
mqueue
android
eclipse
java
mac
ios
html5
js
mysql
protobuf
apache
hadoop
install
iocp
twisted
centos
mapreduce
hbase
thrift
tutorial
hive
erlang
lucene
hdfs
sqoop
utf8
filter
草原
yarn
ganglia
恢复
scrapy
django
fsimage
flume
tail
flume-ng
mining
scala
go
kafka
gradle
cassandra
baas
spring
postgres
maven
mybatis
mongodb
https
nodejs
镜像
心理学
机器学习
Keras
theano
anaconda
docker
spark
akka-http
json
群论
区块链
加密
抽象代数
离散对数
同余
欧拉函数
扩展欧几里德算法
ES6
node-inspect
debug
win10
vscode
挖矿