php - 伪造 cookie 的 'path' - 通过 .htaccess/javascript/或其他方式?

标签 php javascript .htaccess matomo mod-rewrite

背景

我有 php/js 软件 ( Piwik ),它设置了一个 cookie 来跟踪对网站的访问。

我们的站点(即;不是 Piwik)设置为所有 URL(资源除外)都写回/public/index.php。

这样,我们的每个用户都会获得一个唯一的 URL,例如;

http://www.example.com/user1

http://www.example.com/user2

...等等

我在 Piwik 中跟踪每个用户 URL,它是 suggested我需要将 cookie 中的路径设置为 Apache 映射到实际目录的路径。

因为我们没有每个用户的实际目录,所以我们不能这样做。

最后,我们继续使用 RewriteBase在 .htaccess 中告诉 Apache 我们认为用户的 URL 是它自己的目录。

然而,这还不够,因为似乎没有一种方法可以在不对“base”进行硬编码的情况下使用 RewriteBase。

问题

我可以在我的 .htaccess 中做这样的事情吗? Francois Deschenes's answer说我不能这样做。 <罢工>

<罢工>
RewriteCond ^([^/]*)(/.*)?
RewriteBase %1

<罢工>

我还有哪些其他方法可以确保将 cookie 的“路径”设置为用户的 URL 而不仅仅是“/”?

我目前拥有的

/中的.htaccess;

RewriteRule ^(.*)$ /public/$1 [L]

然后/public中的.htaccess包含;

RewriteRule ^index\.php5/(.*)$ -                   [L]
RewriteRule ^index\.php5?(.*)$ -                   [L]
RewriteRule ^index\.php5$      -                   [L]

RewriteRule ^(.*)$             /public/index.php5  [L]

请注意,对于已移动的路径等,这两者在开头都有其他规则。

感谢所有帮助!

我尝试过的

在 JS Piwik 对象上调用 .setCookiePath(),如 Piwik documentation 中的建议.例如,对于 URL http://www.example.com/user1 , 调用 .setCookiePath('/user1') 实际上并没有设置 cookie 的路径。

向 URL 添加尾部斜杠,然后调用 .setCookiePath()。例如,网址 http://www.example.com/user1/然后调用 .setCookiePath('/user1') 不会设置 cookie 的路径。

相关问题

With mod_rewrite can I specify a RewriteBase within a RewriteCond? - 不幸的是,答案并未表明我是否可以使用当前路径作为基础。

最佳答案

你不能用 mod_rewrite 做到这一点。 Apache 和 mod_rewrite 与 cookie 无关(至少就 Piwik 而言)。这不是与 Apache 相关的问题,而是 Piwik 如何设置 cookie。如果您使用的是 Piwik JavaScript 跟踪器,请查看 this specific section of the documentation ,更具体地说,“如果您跟踪一个域的子目录或不同 Piwik 网站中的页面”部分。

您基本上需要使用 setCookiePath 函数,无论您在哪里设置 JavaScript,都可以使用 PHP 填写路径:

Javascript:

tracker.setCookiePath('/user1');

.htaccess 中添加尾部斜杠

将此添加到您的其他规则之上:

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://example.org/$1/ [L,R=301]

关于php - 伪造 cookie 的 'path' - 通过 .htaccess/javascript/或其他方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500902/

相关文章:

apache - SSL Cloudflare - www 到非 www

php - WordPress admin-ajax.php 错误请求 400

php - 如何避免在嵌套循环中执行 mysql 查询?

php - laravel sanctum SPA 身份验证 protected 路由返回 { "message": "unauthenticated"}

javascript - Polymer elemento <chart-pie> 和绑定(bind)

javascript - 将过滤器添加到 Angular 中的选择框选项列表

javascript - Jquery滚动插件仅向下滚动

apache - htaccess 和多个 htpasswd

git - 如何防止自述文件可通过网络访问

php - 如何在 php 中划分系列以创建用于 google 图表的 json 表