Maison > développement back-end > Problème PHP > Comment utiliser PHP pour masquer les URL

Comment utiliser PHP pour masquer les URL

PHPz
Libérer: 2023-04-04 14:08:01
original
1757 Les gens l'ont consulté

在 web 开发中,我们经常需要隐藏网址中的参数或者文件路径。这种做法既可以保护网站的安全性,也可以美化网站的 URL。那么,如何使用 PHP 做到网址隐藏呢?

一、使用 mod_rewrite 重写规则

mod_rewrite 是 Apache HTTP 服务器中的一个模块,它可以重写 URL。通过重写规则,我们可以将 URL 中的参数或者文件路径进行隐藏。使用 mod_rewrite 做法如下:

  1. 在 Apache 的配置文件中启用 mod_rewrite。
LoadModule rewrite_module modules/mod_rewrite.so
Copier après la connexion
  1. 编写重写规则。

重写规则需要在 .htaccess 文件中定义,例如:

RewriteEngine On

# 如果请求的不是文件或目录,则做以下处理
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# 将以 /article/ 开头的请求重写为 article.php?id=xxx
RewriteRule ^article/(.*)$ article.php?id=$1 [L,QSA]
Copier après la connexion

上述规则中,%{REQUEST_FILENAME} 表示请求的文件名和路径。如果请求的不是文件或目录,则进入重写规则。RewriteRule 语法中 ^article/(.*)$ 表示匹配以 /article/ 开头的 URL,$1 表示取出匹配规则中括号里的内容,将其重写为 article.php?id=xxx,并且加上 [L,QSA],表示停止其它规则的检查,不改变 URL 请求标记。

二、使用隐藏的文件夹,避免 URL 暴露

我们可以建立一个被 Apache 忽略的文件夹,如 /library,然后将所有需要隐藏的文件放在其中,通过 Apache 的 rewrite 规则指向该文件夹。

  1. 获取请求的 URL 是否在 /library 文件夹中存在,是则停止重写,否则重写如下:
# 如果文件不存在,则从 /library 文件夹中获取请求的文件
RewriteCond %{DOCUMENT_ROOT}/library%{REQUEST_URI} -f
RewriteRule ^(.*)$ /library/$1 [L]
Copier après la connexion
  1. 如果请求的文件不在 /library 文件夹中,则重写为 PHP 脚本。
# 如果目标文件是 PHP 脚本,则重写为脚本路径
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*)$ /$1.php [L]
Copier après la connexion

三、使用 Base64 编码隐藏 URL

将 URL 中的参数用 Base64 编码,此做法虽然不能完全隐藏 URL,但是可以使其对普通用户不可读。例如:

<a href="index.php?action=<?php echo base64_encode(&#39;login&#39;) ?>">Login</a>
Copier après la connexion

将参数 login 用 Base64 编码后,URL 如下:

index.php?action=bG9naW4=
Copier après la connexion

在 PHP 中使用如下代码解码:

$action = base64_decode($_GET['action']);
Copier après la connexion

综上所述,网址隐藏对于 Web 安全来说至关重要。以上三种方式使用了不同的技术和工具,需要根据具体业务需求和技术实现的难度来选择。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal