.htaccess 如何在推荐人中隐藏参数

hmmo2u0o  于 2023-01-26  发布在  其他
关注(0)|答案(2)|浏览(123)

我需要稍微修改源引用,我这样做:
在我的.HTACCESS文件中:

RewriteEngine On

RewriteRule ^/?[\w]{10}$ https://audiobookscloud.com/bayg45xx2ds/?target=https://whatsmyreferer.com/ [L,NC]

在我的帖子页面上,我有这个代码:

<?php if($_GET['target']) { ?>
    <meta name="referrer" content="unsafe-url">
    <meta http-equiv="REFRESH" 
              content="0;URL=<?php echo $_GET['target'];?>">
    
<?php } ?>

但推荐人显示如下:https://audiobookscloud.com/bayg45xx2ds/?target=https://whatsmyreferer.com/
但我需要它完全像这样::https://audiobookscloud.com/bayg45xx2ds/
是否可以隐藏URL参数?如何获取

xmjla07d

xmjla07d1#

要隐藏URL参数,可以修改.htaccess文件中的RewriteRule,将其从最终URL中删除。

RewriteEngine On
RewriteRule ^/?[\w]{10}$ https://audiobookscloud.com/bayg45xx2ds/ [L,NC]

这将从最终URL中删除“?target=https://whatsmyreferer.com/“。
此外,您还可以从帖子页面的PHP代码中删除该参数:

<?php if($_GET['target']) { ?>
    <meta name="referrer" content="unsafe-url">
    <meta http-equiv="REFRESH" 
              content="0;URL=https://audiobookscloud.com/bayg45xx2ds/">
<?php } ?>
wfsdck30

wfsdck302#

浏览器不会仅仅因为你希望这样做就删除引用URL的一部分,你需要这样做,当刷新发生时,浏览器实际上是“在”你希望作为引用者发送的URL上。
由于GET参数 * 不能 * 从URL中删除,因为您需要target参数值,您可以通过POST请求“绕道”。

<?php if($_GET['target']) { ?>
    <form action="https://audiobookscloud.com/bayg45xx2ds/" method="post">
    <input type="hidden" name="target" value="<?php echo $_GET['target'];?>">
    </form>
    <script>document.forms[0].submit();</script>
<?php } ?>
<?php if($_POST['target']) { ?>
    <meta name="referrer" content="unsafe-url">
    <meta http-equiv="REFRESH" 
              content="0;URL=<?php echo $_POST['target'];?>">
    
<?php } ?>

当传递target GET参数时,创建一个表单,它指向URL,* 不带 * 该参数,并通过一个隐藏字段传递值。很小的脚本,自动提交该表单。
然后,当脚本接收到POST请求时,输出执行 meta刷新的原始代码,只是这次的值取自POST参数。
另外,要使其不对XSS开放,您应该在输出参数值时应用htmlspecialchars

相关问题