伪造一个cookie的'路径' - 通过.htaccess/javascript /或其他?

Jes*_*ord 8 javascript php .htaccess mod-rewrite matomo

背景

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

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

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

http://www.example.com/user1

http://www.example.com/user2

......等

为了跟踪Piwik中的每个用户URL ,我建议我需要将cookie中的路径设置为Apache映射到实际目录的路径.

由于我们没有为每个用户提供实际目录,因此我们无法执行此操作.

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

然而,这不足,因为似乎没有办法在不对"基础"进行硬编码的情况下使用RewriteBase.

这个问题

我可以在.htaccess中做这样的事情吗? Francois Deschenes的回答说我不能这样做.

RewriteCond ^([^/]*)(/.*)?
RewriteBase %1
Run Code Online (Sandbox Code Playgroud)

我还有什么其他选择来确保将cookie的"路径"设置为用户的URL而不仅仅是"/"?

我现在有什么

.htaccess in/contains;

RewriteRule ^(.*)$ /public/$1 [L]
Run Code Online (Sandbox Code Playgroud)

然后/ public中的.htaccess包含;

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

RewriteRule ^(.*)$             /public/index.php5  [L]
Run Code Online (Sandbox Code Playgroud)

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

感谢您的帮助!

我试过了什么

按照Piwik文档中的建议,在JS Piwik对象上调用.setCookiePath().例如,对于URL http://www.example.com/user1,调用.setCookiePath('/ user1')并不会实际设置cookie的路径.

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

相关问题

使用mod_rewrite,我可以在RewriteCond中指定RewriteBase吗? - 不幸的是,答案并不表示我是否可以使用当前路径作为基础.

Fra*_*nes 6

你不能这样做mod_rewrite.Apache和mod_rewrite与cookie无关(至少就Piwik而言).这不是与Apache相关的问题,而是Piwik如何设置cookie.如果您正在使用Piwik JavaScript跟踪器,请查看文档的这一特定部分,更具体地说,"如果您在不同的Piwik网站中跟踪一个域子目录或页面"部分.

您基本上想要使用该setCookiePath函数,无论您在何处设置JavaScript,都要使用PHP来填充路径:

使用Javascript:

tracker.setCookiePath('/user1');
Run Code Online (Sandbox Code Playgroud)

要添加尾部斜杠 .htaccess

在您的其他规则之外添加此内容:

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