加密的密码输入框扩展(原ACL中的功能)
发布于:2022-01-17 09:50:54
#1 jake
目前加密的密码输入框已经被移出spAcl类,独立成为一个扩展。
同时修正了密码输入为空时的问题。
请注意:1. 该密码输入框产生的密码,是经过MD5处理后的字符串,所以,如果从其他途径(未经MD5)提交的密码,需要将此密码进行MD5编码后再和md5password产生的密码进行比对。
2. 使用该扩展,需要理解MD5加密的含义,无法明白此扩展的应用范围,请不要使用该扩展。
使用方法:1. 将md5password.php放置到SpeedPHP目录中的Extensions中(或是APP_PATH./include中)。
2. 在需要使用该扩展的控制器最前面,或是入口文件的reqire(SP_PATH.'/SpeedPHP.php');和spRun()的中间,放置以下语句:
import('md5password.php');
以加载md5password的类库文件。
3. 在模板中,可以使用:
<{pwinput id=mypw add="class=pwform name=mypwname"}>
来生成该输入框。同时,需要在该输入框所在的表单
4. 在提交后的页面中,使用
$value = spClass('md5password')->pwvalue();
来获得提交后的
密码的MD5值(注意,并非密码本身)。
扩展下载:md5password.rar
2010-04-30 11:30:55
#2 只是因为
下过来学习学习 做个用户名登陆的哈哈
2010-04-30 11:42:43
#3 jiayan41
我已经全部搞定啦,终于可以畅快体验 speedphp 3 啦
2010-04-30 12:08:17
#4 vsxp
好,做为一个扩展加载进去。
2010-05-04 15:41:35
#5 jeffrey_shou
好东西。
2010-05-04 16:14:35
#6 hbf85435055
学习一下!
2010-05-12 09:40:54
#7 yuanjianhua
终于搞定了,原来有个 aclcode(); 这个方法,唉,晕死
2010-06-06 21:04:10
#8 yuanjianhua
回复 1 jake 有个问题,就是如果提交了第一次,在没刷新了的情况下,第二次获取的就为空,那怎么解决啊!
2010-06-06 23:19:20
#9 jake
回复 jake
有个问题,就是如果提交了第一次,在没刷新了的情况下,第二次获取的就为空,那怎么解决 ...
yuanjianhua 发表于 2010-6-6 23:19
你说的这样两次刷新都能提交的情况,就是远程提交攻击的手段。但是这个密码加密框的功能是“避免”这种攻击,所以如果希望“不避免”这种攻击,可以不使用加密输入框即可。
2010-07-28 22:31:05
#10 prince
回复 1 jake 4的代码获取的值是-1,并不是密码框的值,如何获取密码框的值呢?
2010-07-31 14:55:20
#11 jake
回复 jake
4的代码获取的值是-1,并不是密码框的值,如何获取密码框的值呢? ...
prince 发表于 2010-7-31 14:55
-1代表了远程提交、或者是其他不安全的提交方式(比如多窗口提交),如果你的代码正确,而用户又是正常提交的话,就可以获得密码值。
-1是一种状态,用于判断是否用户提交有问题,和findAll等函数返回false代表无法找到相应记录是同理的,当然这也是要建立在代码没写错的前提下。
2010-07-31 16:00:48
#12 prince
回复 11 jake html文件表单的代码:
控制器login的代码:
header("content-type:text/html; charset=utf8");
class login extends spController{
function c_login(){
$acc_Acc = $this -> spArgs("accouts");
$acc_Pw = spClass('md5password') -> pwvalue();
$acc_Acc = $this -> c_chkAcc($acc_Acc);
//$acc_Pw = $this -> c_chkPw($acc_Pw);
if ($acc_Acc == 1){
$accouts = $this ->spArgs("accouts");
echo '$acc_Acc:'.$accouts.' $acc_Pw:'.$acc_Pw;
}
}
public function c_chkAcc($Kword_usr){//验证所提交帐户名是否只包含数字、字母和下划线
return (preg_match('/^[a-zA-Z0-9_]{1,}$/',$Kword_usr)) ? true : false;
}
public function c_chkPw($Kword_usr){//验证所提交帐户名是否只包含数字和字母
return (preg_match('/^[a-zA-Z0-9]{1,}$/',$Kword_usr)) ? true : false;
}
function err_back(){
$this -> err_msg = spArgs($err_msg);
$this -> spUrl();
$this -> display("c_err.html");
}
}
2010-07-31 17:09:09
#13 prince
控制器第7行注释掉echo出来的密码框的值是空的?如果不注释掉echo出来是-1,我也没有开多窗口也不是刷新后再提交的,何解?
2010-07-31 17:22:18
#14 jake
控制器第7行注释掉echo出来的密码框的值是空的?如果不注释掉echo出来是-1,我也没有开多窗口也不是刷新后再 ...
prince 发表于 2010-7-31 17:22
不清楚,请仔细检查一下你的代码。
你可以试试在pwvalue之前检查一下$_SESSION["SpAclInputHash"]的值,
同时看看 spClass("spArgs")->get($_SESSION["SpAclInputHash"])的值是多少。这个值就是真正提交上来的密码(MD5后)。
而pwvalue会通过spClass("spArgs")->get($_SESSION["SpAclInputHash"])来获取到密码,同时,在获取后会unset这个session,如果再调用pwvalue只能取得-1,因为pwvalue只能获取一次,防止刷新提交。
2010-07-31 17:36:39
#15 prince
回复 14 jake login控制器的动作c_login改为:
function c_login(){
$acc_Acc = $this -> spArgs("accouts");
//$acc_Pw = spClass('md5password') -> pwvalue();
$acc_Acc = $this -> c_chkAcc($acc_Acc);
//$acc_Pw = $this -> c_chkPw($acc_Pw);
if ($acc_Acc==true){
//$accouts = $this ->spArgs("accouts");
$all = $this -> spArgs();
dump($all);
}else{
$this -> err_msg = '非法信息';
$this -> backUrl = spUrl();
$this -> display("err.html");
}
}
后
dump($all)的值为:
Array
(
[c] => login
[a] => c_login
[accouts] => admin
[mypwname] => 0000000000000000
[f149f7747749] => 21232f297a57a5a743894a0e4a801fc3
[verifycode] => guphb
[Submit] => 鐧?闄? [PHPSESSID] => ghstjhob0it8bvd4mf02dss3s3
)
2010-07-31 17:52:16
#16 hitzxl
多谢楼主提供这么好的扩展。
只是碰到一个问题,
一个页面上放着两个密码框的时候(一个用于确认),
只有第二个密码框在提交的瞬间变成加密后字符。
这种情况怎么办?
2010-10-31 21:15:04
#17 jake
多谢楼主提供这么好的扩展。
只是碰到一个问题,
一个页面上放着两个密码框的时候(一个用于确认),
只有 ...
hitzxl 发表于 2010-10-31 21:15
遗憾,目前该扩展不能支持两个密码输入框。
2010-11-01 09:15:05
#18 hitzxl
遗憾,目前该扩展不能支持两个密码输入框。
jake 发表于 2010-11-1 09:15
这样子呀。
谢谢你的回答。
2010-11-03 11:01:07
#19 gnuser
建议把MD5加密文件也一起放到“SpeedPHP 3.1.66”下载文件中吧。这样大家就不用另外下载这个扩展了。
2011-05-22 23:06:51
#20 vsxp
订单编号:
77720779941852
2011-05-23 02:26:34
#21 vsxp
建议把MD5加密文件也一起放到“SpeedPHP 3.1.66”下载文件中吧。这样大家就不用另外下载这个扩展了。 ...
gnuser 发表于 2011-5-22 23:06
可以直播用md5函数,所以把它当一种扩展了。
2011-05-23 02:28:15
#22 gnuser
<{pwinput id=mypw add="class=pwform name=mypwname"}>中size大小如何更改?
其中size控制框长度,目前下载程序中的两个框长度不一,用户名的可以直接控制,但密码这个如何控制呢?请大家指导一下。谢谢
2011-05-23 12:21:27
#23 jake
回复 22 gnuser 用CSS
2011-05-23 12:45:32
#24 gnuser
谢谢jake。
2011-05-23 23:52:33
#25 ╰☆君仔^★
谢谢楼主。。。。
2012-12-24 10:19:07
#26 江望雨
我用的是js md5在提交的时候改变文本框的值,一样的哦!
2013-01-05 21:16:00
#27 daixingchen0
我在模板中加了<{pwinput id=mypw add="class=pwform name=mypwname"}>
控制器$value = spClass('md5password')->pwvalue(); 但是模板提示我报错 未知这个属性pwinput
2013-07-23 11:52:25
#28 宁静致远
hello jake 为什么 要用上这个类库呢 直接用 md5()有什么 缺陷吗 ?
2013-11-01 22:06:01
#29 jake
宁静致远 发表于 2013-11-1 22:06
hello jake 为什么 要用上这个类库呢 直接用 md5()有什么 缺陷吗 ?
MD5是PHP的函数,而上面说的扩展,是JS的MD5作为页面端加密。和PHP的MD5不是同一个东西。
2013-11-01 23:34:33
#30 宁静致远
jake 发表于 2013-11-1 23:34
MD5是PHP的函数,而上面说的扩展,是JS的MD5作为页面端加密。和PHP的MD5不是同一个东西。
...
- $value = spClass('md5password')->pwvalue();
- //compare to
- $value=md5(spClass('md5password'));
thanks, jake 我是有点疑惑 例如上面两行代码效果一样 都是MD5加密 一个用了扩展,有什么优势呢
2013-11-02 12:07:24