大家在使用PHP进行GET或POST提交数据时,经常会在URL带着参数进行传递,比如www.mdaima.com/get.php?id=1&page=5,这里就将id编号和page页码进行了参数传递,如果这样直接明文传输,会将参数直接暴露给用户,要是是比较重要的数据这样传输我觉得还是不太安全。那如果将参数变成下面这样,是不是会好点呢?
|
1
|
www.mdaima.com/get.php?VGsAYQ96VzkEaF08DTxTLQIy |
我们再加强一下,将get.php重命名改为get_mb.php,然后利用静态规则,把get.html映射到get_mb.php,这样即使用户试着访问get.php也无法找到真实的PHP文件了,因为真实的PHP文件不是get.php而是get_mb.php,以下是.htaccess规则设置?
|
1
|
RewriteRule |
利用加密再配合伪静态设置,最终效果就是下面这样了,即隐藏了真实php文件get_mb.php又将参数都加密传输了。
|
1
|
www.mdaima.com/get.html?VGsAYQ96VzkEaF08DTxTLQIy |
相比之下已经好一些了吧,至少看上去会好很多,那如何进行加密和解密呢?请看下面函数(不用细看,直接拿过去用就行了,重点看如果调用)
|
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 = $encrypt_key); $ctr=0; $tmp = ""; for($i=0;$i<</code> { 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 = $ctr=0; $tmp = ""; for ($i=0;$i<</code> { 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 = $txt,$key); $tmp = ""; for($i=0;$i<</code> { $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 = $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="?
|