分享如何使用PHP将URL地址参数进行加密传输提高网站安全性

大家在使用PHP进行GET或POST提交数据时,经常会在URL带着参数进行传递,比如www.mdaima.com/get.php?id=1&page=5,这里就将id编号和page页码进行了参数传递,如果这样直接明文传输,会将参数直接暴露给用户,要是是比较重要的数据这样传输我觉得还是不太安全。那如果将参数变成下面这样,是不是会好点呢?

1
www.mdaima.com/get.php?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI/XToBPVM5ADxfag==

我们再加强一下,将get.php重命名改为get_mb.php,然后利用静态规则,把get.html映射到get_mb.php,这样即使用户试着访问get.php也无法找到真实的PHP文件了,因为真实的PHP文件不是get.php而是get_mb.php,以下是.htaccess规则设置?

1
RewriteRule ^get.html$ get_mb.php?&%{QUERY_STRING}   #.htaccess伪静态规则的设置(加入到.htaccess里就行)

利用加密再配合伪静态设置,最终效果就是下面这样了,即隐藏了真实php文件get_mb.php又将参数都加密传输了。

1
www.mdaima.com/get.html?VGsAYQ96VzkEaF08DTxTLQIyDmsBIQtnVj0Fe1ciAD0EN1M0X2MHMQYxDDcAOwI/XToBPVM5ADxfag==

相比之下已经好一些了吧,至少看上去会好很多,那如何进行加密和解密呢?请看下面函数(不用细看,直接拿过去用就行了,重点看如果调用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//---------------以下为加密函数(复制过去就行了)-----------------
function keyED($txt,$encrypt_key){       
    $encrypt_key =    md5($encrypt_key);
    $ctr=0;       
    $tmp "";       
    for($i=0;$i<</code>strlen($txt);$i++)       
    {           
        if ($ctr==strlen($encrypt_key))
        $ctr=0;           
        $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
        $ctr++;       
    }       
    return $tmp;   
}    
function encrypt($txt,$key)   {
    $encrypt_key = md5(mt_rand(0,100));
    $ctr=0;       
    $tmp "";      
     for ($i=0;$i<</code>strlen($txt);$i++)       
     {
        if ($ctr==strlen($encrypt_key))
            $ctr=0;           
        $tmp.=substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
        $ctr++;       
     }       
     return keyED($tmp,$key);
    
function decrypt($txt,$key){       
    $txt = keyED($txt,$key);       
    $tmp "";       
    for($i=0;$i<</code>strlen($txt);$i++)       
    {           
        $md5 substr($txt,$i,1);
        $i++;           
        $tmp.= (substr($txt,$i,1) ^ $md5);       
    }       
    return $tmp;
}
function encrypt_url($url,$key){
    return rawurlencode(base64_encode(encrypt($url,$key)));
}
function decrypt_url($url,$key){
    return decrypt(base64_decode(rawurldecode($url)),$key);
}
function geturl($str,$key){
    $str = decrypt_url($str,$key);
    $url_array explode('&',$str);
    if (is_array($url_array))
    {
        foreach ($url_array as $var)
        {
            $var_array explode("=",$var);
            $vars[$var_array[0]]=$var_array[1];
        }
    }
    return $vars;
}
 
$key_url_md_5 'mdaima.com-123-scc'//可以更换为其它的加密标记,可以*发挥
 
//---------------以上为加密函数-结束(复制过去就行了)-----------------

以上这个是关键的加密与解密函数,下面看一下如何调用,我们举例说一下将表单action中参数id和page进行加密并加入时间戳一起,这样每次的链接地址都是动态的,而且可以在接收页面设置页面限制超时的有效期了。

1
"form1" name="form1" method="post" action="?

分享:

分享如何使用PHP将URL地址参数进行加密传输提高网站安全性喜欢

0

分享如何使用PHP将URL地址参数进行加密传输提高网站安全性赠金笔

阅读
评论 收藏
转载
喜欢
打印举报
已投稿到:
加载中,请稍候......
  • 评论加载中,请稍候...
发评论

登录名: 密码: 找回密码 注册 记住登录状态

昵   称:

评论并转载此博文分享如何使用PHP将URL地址参数进行加密传输提高网站安全性

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

Copyright © 1996 - 2017 SINA Corporation, All Rights Reserved

新浪公司 版权所有

上一篇:js加减法运算多出很多小数点


下一篇:二维码开源库zbar、zxing使用心得