Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP创建安全的web链接?_Php_Security_Hyperlink - Fatal编程技术网

如何使用PHP创建安全的web链接?

如何使用PHP创建安全的web链接?,php,security,hyperlink,Php,Security,Hyperlink,我正在为一所学校开发一个使用原始PHP的web应用程序。当用户访问学生的个人资料页面时,地址栏上的web链接显示如下-。但我想表现得像这样- 我可以使用base64_encode进行编码,但如果在用户试图查看学生的个人资料时进行编码,则不会显示任何信息 有谁能帮我做这件事吗 提前感谢在使用studentid之前,您需要在studentid上调用base64_decode 但是,这仍然不安全。base64不是加密,而是一种编码方法。这就像把密码从法语翻译成德语一样安全,前提是德国人不会说法语 为

我正在为一所学校开发一个使用原始PHP的web应用程序。当用户访问学生的个人资料页面时,地址栏上的web链接显示如下-。但我想表现得像这样-

我可以使用base64_encode进行编码,但如果在用户试图查看学生的个人资料时进行编码,则不会显示任何信息

有谁能帮我做这件事吗


提前感谢

在使用studentid之前,您需要在studentid上调用base64_decode


但是,这仍然不安全。

base64不是加密,而是一种编码方法。这就像把密码从法语翻译成德语一样安全,前提是德国人不会说法语

为了正确地保护它,您需要使用库进行正确的加密。由于加密数据不与其他人共享,因此可以将使用的加密/解密密钥硬编码到脚本中


以加密ID值产生的二进制垃圾为例,然后对其进行base64编码,以便将其安全地放入URL中。然后将其从URL中取出时,再次通过base64_decode和mcrypt传递。

您在对该问题的评论中添加了更多信息:

我有一个页面,其中显示了列表中所有学生的姓名,如果我点击其中任何一个,它会将我带到该特定学生的个人资料页面,因为我这样编码-“>当该学生的个人资料页面出现时,我在地址栏上找到如下链接-
http://localhost/utc/studentprofile.php?studentid=11100103
我希望链接看起来像
http://localhost/utc/studentprofile.php?studentid=Adz2457cxfgga&&sas
而不是显示准确的学生ID

那么Base64编码不是这样做的,因为它对保护学生的ID几乎没有任何作用

如果你想避免透露学生的身份证,没有比不透露更安全的方法了。您还有机会为学生档案页面提供更可读的URL:

在服务器端创建一个简单的映射数据库表。给每个学生一个独特的“把手”(例如,我的可能是“tjcrowder”,除非也有我名字的牛饲料商人以前去过学校,在这种情况下,我可能是“tjcrowder2”)。将句柄建立在您已经在个人资料页面上显示的信息上(例如,我假设这些页面列出了学生的姓名)

然后你的链接变成

http://localhost/utc/studentprofile.php?studentid=tjcrowder
甚至更好

http://localhost/utc/studentprofile.php?tjcrowder
或者更好的是,对其进行URL重写,这样您就可以

http://localhost/utc/students/tjcrowder
studentprofile.php
中,执行DB查询以获取句柄并查找学生ID,然后检索学生的配置文件信息


很好的可读URL,没有显示学生ID。

你能澄清这个问题吗?根本不清楚您在问什么,尤其是因为Base64编码中的
11100103
MTExMDAxMDM=
,而不是
。I1vlXKbsAAljiXXX4ylPpWER1D8re93AA--
。但除此之外,还不清楚链接来自何处(Base64编码并不“安全”)。Crowder,我有一个页面,它显示列表中所有学生的姓名,如果我点击其中任何一个,它会将我带到该特定学生的个人资料页面,因为我这样编码-当该学生的个人资料页面出现时,在地址栏上,我找到这样的链接-我希望链接看起来像,而不是显示确切的学生ID。谢谢:)非常感谢你的帮助。:)