分享如何使用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 | 会员注册 | 产品答疑

新浪公司 版权所有

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • RPM 包默认安装路径

    RPM 包默认安装路径/etc/配置文件安装目录/usr/bin/可执行的命令安装目录/usr/lib/程序所使用的函数库保存位置/usr/share/doc/基本的软件使用手册保存位置/usr/share/man/帮助文件保存位置…

  • pandas读取excel某一行_python读取csv数据指定行列

    pandas读取excel某一行_python读取csv数据指定行列pandas中查找excel或csv表中指定信息行的数据使用loc函数来查找。话不多说,直接演示:有以下名为try.xlsx表:例如查找A部门所有成员的的姓名和工资或者工资低于3000的人:代码如下:importpandasaspd#导入pandas库excel_file=’./try.xlsx’#导入文件data=pd.read_excel(excel_file)#读入数据print(data.loc[data[‘部

  • 硬件加密芯片介绍 及 加密芯片选择(加密IC) 加密芯片原理

    硬件加密芯片介绍 及 加密芯片选择(加密IC) 加密芯片原理前端时间有研究多款加密芯片,加密算法实现,以及激活成功教程可能,也有一些个人的观点,仅供参考;一,加密芯片的来源及工作流程:市面上的加密芯片,基本都是基于某款单片机,使用I2C或SPI等通讯,使用复杂加密算法加密来实现的,流程大致如下:主控芯片生成随机码–>主控芯片给加密芯片发送明文–>加密芯片通过加密算法对明文进行加密生成密文–>加密芯片返回密文给主控芯片–>主控芯片对密文进行解密生成解密值–>主控芯片对解密值与之前明文进行对比,比较.

  • HashMap遍历的四种常用方式「建议收藏」

    HashMap遍历的四种常用方式「建议收藏」古人云:温故而知新。最近闲来无事就去翻阅了一下之前的一些基础java知识点。本想着随便看看,然而就发现有了意外收获。比如本文所讲HashMap遍历的四种常用方式。大伙们一起学习一起进步,记得点赞关注以示鼓励哈!!!准备工作首选我们先准备一个HashMap。publicclassTest1{publicstaticvoidmain(String[]args){Map<String,String>map=newHashMap<St

  • python编写时钟代码

    python编写时钟代码#!/urs/bin/python#_*_coding:utf-8#!/usr/bin/envpython#-*-coding:utf-8-*-importturtleimportdatetime#移动一段距离defskip(distance):”””移动乌龟一段距离,不留痕迹:param…

  • 使用prometheus和grafana监控springboot应用

    使用prometheus和grafana监控springboot应用

发表回复

您的电子邮箱地址不会被公开。

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