分享如何使用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)
上一篇 2021年10月9日 下午12:00
下一篇 2021年10月9日 下午1:00


相关推荐

  • Nano Banana Prompts完整指南:60+实测Prompt库(2025中文版)

    Nano Banana Prompts完整指南:60+实测Prompt库(2025中文版)

    2026年3月13日
    3
  • C语言中按位取反_数组按位取反

    C语言中按位取反_数组按位取反与运算:&两者都为1为1,否则为01&1=1, 1&0=0, 0&1=0, 0&0=0或运算:|两者都为0为0,否则为11|1=1, 1|0=1, 0|1=1,0|0=0非运算:~1取0,0取1~1=0,~0=1~(10001)=01110异或运算两者相等为0,不等为11^1=0,

    2022年8月15日
    16
  • myeclipse10 64 安装svn插件的方式

    myeclipse10 64 安装svn插件的方式方法一:在线安装1.打开HELP->MyEclipseConfigurationCenter。切换到SoftWare标签页。2.点击AddSite打开对话框,在对话框Name输入Svn,URL中输入:http://subclipse.tigris.org/update_1.6.x3.在左边栏中找到PersonalSite中找到SVN展开。将CoreSVNK

    2022年7月20日
    16
  • 1156针cpu排行_755针最强CPU

    1156针cpu排行_755针最强CPUIntel酷睿i7875K¥2330CPU主频:2930MHz智能加速:3600MHz插槽类型:LGA1156制作工艺:45纳米二级缓存:4×256KB三级缓存:8M核心数量:四核心核心类型:Lynnfield线程数:八线程总线类型:DMI总线热设计功耗(TDP):95W内核电压:0.65-1.40V内存控制器:双通道DDR3-1066/1333最大16G64位处理器。…

    2026年1月31日
    3
  • phpstorm2021.9 永久激活码(JetBrains全家桶)

    (phpstorm2021.9 永久激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    200
  • SQL 进阶教程

    SQL 进阶教程内容简介本书是 SQL 基础教程 作者 MICK 为志在向中级进阶的数据库工程师编写的一本 SQL 技能提升指南 全书可分为两部分 第一部分介绍了 SQL 语言不同寻常的使用技巧 带领读者从 SQL 常见技术 比如 CASE 表达式 自连接 HAVING 子句 外连接 关联子查询 EXISTS 去探索新发现 这部分不仅穿插讲解了这些技巧背后的逻辑和相关知识 而且辅以丰富的示例程序 旨在帮助读

    2026年3月18日
    2

发表回复

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

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