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

分享如何使用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=
"?

0

阅读 评论 收藏 转载 喜欢 打印举报


已投稿到:

加载中,请稍候......


评论加载中,请稍候...


发评论


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

昵   称:

评论并转载此博文sg_trans.gif

发评论

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


  

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

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

新浪公司 版权所有

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113898.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分酒问题(DFS解法)

    分酒问题(DFS解法)题目大概是这样:已知有三个容量分别为3千克、5千克和8千克的并且是没有刻度的酒瓶,3千克和5千克的瓶子均装满了酒,而8千克的瓶子为空。现要求仅用这三个酒瓶将这些酒均分为两个4千克并分别装入5千克和8

    2022年7月2日
    30
  • ubuntu安装新字体命令_安装字体命令

    ubuntu安装新字体命令_安装字体命令ubuntu里新装的terminator里,字体实在是不忍直视。尤其是字母i,跟别的字母挤在一起,根本就看不清楚。所以特意下载了一个苹果的Monaco字体来代替。linux系统的字体文件放在/usr/share/fonts/目录以及用户的~/.fonts和~/.local/share/fonts目录下,第一个位置为系统所用用户共享,将字体安装到这个目录需要管理员权限;后面两个位置则为当前登陆用…

    2022年9月23日
    2
  • 【软考系统架构设计师】2018下系统架构师综合知识历年真题「建议收藏」

    【软考系统架构设计师】2018下系统架构师综合知识历年真题「建议收藏」【软考系统架构设计师】2018下系统架构师综合知识历年真题

    2022年5月22日
    76
  • python超链接格式_Openpyxl中的超链接样式「建议收藏」

    python超链接格式_Openpyxl中的超链接样式「建议收藏」4个答案:答案0:(得分:1)importopenpyxlfromopenpyxl.stylesimportFont,Color,colors#…#alternative1:sethyperlinkpropertytocelldeflink_1(cell,link,display=None):cell.hyperlink=linkcell.font=…

    2022年7月19日
    113
  • linux安装siege

    linux安装siegesiege安装笔记本文介绍centos和ubuntu安装方法centos安装下载:[root@siege-4.0.4]#wgethttp://download.joedog.org/siege/siege-4.0.4.tar.gz解压:[root@siege-4.0.4]#tarzxvfsiege-4.0.4.tar.gz打开解压包:…

    2025年7月10日
    2
  • es6转es5_es6转es5插件

    es6转es5_es6转es5插件步骤初始化环境npminit-y首先安装babel组件npminstall@babel/cli@babel/core@babel/preset-envbabel-plugin-transform-es2015-modules-umd-D配置babel,.babelrc(babel配置文件){“presets”:[“@babel/preset-env”],”plugins”:[“transform-es2015-modules-umd”]}

    2022年9月25日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号