与 suPHP 一起实现登录

2023-11-24

如何设计类似登录的功能来使用 suPHP 的文件权限。例如,如果我有一个网站www.example.com以下两个用户有自己的主目录,每个用户都有一个 php 脚本test.php, and a validateUser.php属于另一个用户(root、www-data、apache...)的脚本/home目录。



/home/
├── validateUser.php
├── user1
│   └── test.php
└── user2
    └── test.php
  

user1可以访问user2's通过访问脚本www.example.com/user2/test.php,反之亦然。相反,我想要的是使用类似的方法来引导所有传入的请求模组重写, to validateUser.php。但是,这样做会导致以所有者身份执行所有脚本validateUser.php,不是目标test.php script.

无论如何,是否可以在 suPHP 启动之前调用 php 脚本,然后允许 suPHP 继续或完全中止。


EDIT这是我提供的第二笔赏金。我给 Gustav b/c 的第一个他给了一个很好的部分答案。我将提及到目前为止我所做的尝试,以及为什么它们都不适合我。

1)我尝试过使用模组重写将 URL 重定向到validateUser.php让用户登录,或者调用他们想要调用的任何脚本。问题是我已经设置了虚拟主机,以便每个用户都有自己的虚拟站点(即www.user1.example.com, www.user2.example.com...如果这是一个糟糕的设计方法,请随意粗鲁地指出它)。因此,虽然操作系统看到的文件结构如上,在线上,根目录是这样设置的

VirtualHost = www.user1.example.com
├── validateUser.php
└── test.php
VirtualHost = www.user2.example.com
├── validateUser.php
└── test.php

当然我只是移动了一份副本validateUser.php进入每个用户的目录。问题是现在用户可以删除该文件并将他们想要的任何内容放在那里,就像根本不需要登录一样。解决这个问题的方法是使主文件夹具有粘性(我不建议对主文件夹执行此操作)并使validateUser.php归 root 所有。但现在它将执行 AS root,因为这是 suPHP。这就是我放弃的地方。

2)我可以用古斯塔夫的mod_auth建议,但我不喜欢它要求预先输入密码(就像老式网站一样)。

3) 我考虑了 1) 的变体,如果我可以在虚拟主机之间重定向。例如,像这样重组虚拟主机

VirtualHost = www.user1.example.com
└── test.php
VirtualHost = www.user2.example.com
└── test.php
VirtualHost = www.admin.example.com
└── validateUser.php

然后使用 mod_rewrite 将所有流量从用户重定向到www.admin.example.com/validateUser.php,如果用户已登录(或者登录成功),则用户将被重定向回他们最初尝试登录的站点。这样做的好处(如果可能的话)是,在用户被引导回他们自己的虚拟主机之前,suPHP 不会启动。


您是否考虑过使用以下方式实现用户身份验证mod_auth?如果你决定尝试一下,这里有一个guide您可能会发现有用。

Apache 2.2 的等效项:

  • mod_auth_basic
  • 身份验证指南

请注意,浏览器会存储凭据,并在您发出的每个请求的标头中发送它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与 suPHP 一起实现登录 的相关文章

  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中
  • 将一维数组转换为二维数组并加入 PHP [重复]

    这个问题在这里已经有答案了 我有这个一维数组 array1 Array coupon code gt GTY777R coupon description gt Credito 5 USD array2 二维数组 Array 0 gt Ar
  • 我应该使用 htmlspecialchars 或 mysql_real_escape_string 或两者都使用[重复]

    这个问题在这里已经有答案了 我让用户输入一些信息 姓名 出生日期等 然后我必须将这些值插入数据库 我应该使用mysql real escape string http php net mysql real escape string防止 m
  • PHP:str_replace() - 忽略空格

    我有一个类似的字符串 我想将其替换为 问题是我不知道之间是否会有空格 和 可能有空白 也可能没有空白 可能有制表符或可能有换行符 我该如何更换
  • 访问父函数中定义的变量

    有没有办法访问 foo从内部inner function outer foo function inner print foo inner outer PHP 在 PHP 5 3 中 你可以这样做 function outer foo in
  • 使用 PHP 和 MySQL 的服务器端事件

    我正在使用 PHP 和 MySQL 构建一个 非常基本的 应用程序 该应用程序的目的是在网页上显示 实时 数据交易 这些交易来自于transactionsMySQL 数据库中的表 到目前为止 我可以在网页上检索并显示数据 不过我期待看到数据
  • Codeigniter $this->db->reconnect();用法

    I m not自动加载数据库 因为我的应用程序的大多数页面don t需要数据库处理 否则整个事情会变慢 我想要做的是 当数据库已经存在时 不要建立与数据库的新连接 而是使用它而不是打扰服务器数据库 那么我该如何实施 this gt db g
  • openssl_decrypt 标签值

    我在网站中使用 openssl encrypt decrypt 方法 但在使用 tag 选项时遇到了一些问题 openssl encrypt data method key options iv tag openssl decrypt da
  • OkHttp Authenticator 有时不会调用多个 Retrofit 实例的验证

    我有两个不同的Retrofit两个不同 API 的实例 我也有两个不同的OkHttp3客户 但他们共享相同的Authenticator因为两个 API 的身份验证令牌是相同的 问题是当令牌过期时有时 但几乎总是 其中之一Retrofit O
  • XAMPP 不解析 PHP

    我刚刚安装了 XAMPP 1 8 1 并重新启动了计算机 开始运行 Apache 和 MySQL 并在 XAMPP 下的 htdocs 目录中的测试文件夹中创建了一个测试文件 当我访问 xampp index php 时 他们的页面显示正常
  • 在 ASP.NET MVC 中使用 MySQL 的 AccountController

    在 Visual Studio 中创建默认的 ASP NET MVC 项目会设置一个可以在其中注册用户的基本项目 我将如何继续更改它以使用 MySQL 服务器而不是 SQLServer 现在可以使用了 安装最新的 Connector NET
  • 将 RequestBody json 转换为对象 - Spring Boot

    我是 java 开发的初学者 但之前有 PHP 和 Python 等编程语言的经验 对于如何进行 Spring Boot 的开发几乎没有什么困惑 我正在开发一个rest API 它有以下请求 key value key1 value1 pl
  • JWT在浏览器中存储在哪里?如何防范CSRF?

    我知道基于 cookie 的身份验证 可以应用 SSL 和 HttpOnly 标志来保护基于 cookie 的身份验证免受 MITM 和 XSS 的影响 然而 需要采取更多特殊措施来保护其免受 CSRF 的影响 它们只是有点复杂 参考 ht
  • 如何在 PHP 中制作简短的随机唯一密钥,例如 YouTube 视频 ID? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 有没有办法创建像 YouTube 视频网址中使用的唯一密钥 例如 https www youtube com watch v nWCh
  • PHP strtotime +1 个月添加额外一个月[重复]

    这个问题在这里已经有答案了 我有一个简单的变量 可以将今天添加一个月 endOfCycle date Y m strtotime 1 month 今天是 2013 年 1 月 所以我希望返回 2013 02 但我得到的是 2013 03 我
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • 如何使用 Symfony2 使 form_rest() 不显示字段?

    我已经开始使用 Symfony2 但遇到了一些问题 我想手动渲染字段 但它不起作用 因为我尚未渲染的字段显示为form rest 函数也一样 所以我有两个相同的字段 这是我的代码 div form errors form contenu d
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json
  • 服务器端文件验证在 Yii.2.0 中不起作用

    Is the FileValidatorYii2 中的类只支持客户端验证 我使用代码编写了文件上传系统 在模型中 public function rules return allAllowedFileType safe allAllowed
  • 如何将 JSON 文本转换为 PHP 关联数组

    我将以下 JSON 对象存储在文本文件 data txt 中 player black time 0 from 2c to 3d 我使用 php 阅读 问题 有没有简单的方法可以转换 data到 PHP 关联数组 我尝试过使用json de

随机推荐

  • nodejs websocket 检测断开的套接字

    我有一个nodejs websocket 服务器 但有以下问题 当我的客户端连接到服务器并正常终止时onclose在这些套接字上调用方法 然后对关闭的套接字执行清理操作 当客户端因网络原因断开连接时 onclose方法未被调用 是否有超时时
  • 外部 gem 的资产管道编码问题(UTF-8 与 ASCII-8BIT)

    我正在尝试创建一个包装 d3 js 的 gem 源代码可以在https github com iblue d3 rails 所以当我将这个 gem 包含在我的 Gemfile 中时 gem d3 rails git gt git githu
  • 如何检查表单是否打开,如果打开关闭表单?

    如何检查表单是否打开以及是否打开以关闭表单 我尝试了以下操作 测试了一些代码 但它一直说表单未打开 即使我知道它是 foreach Form a in Application OpenForms if a is YouLikeHits Se
  • 必须采用“app_label.ModelName”形式。" % model ValueError: 无效的模型引用

    When I python3 manage py makemigrations 我收到以下错误 File Library Frameworks Python framework Versions 3 5 lib python3 5 site
  • ASP.Net MVC:dbml 文件的最佳实践

    这可能只是一个是或否类型的问题 但无论如何 从我见过的使用 mvc 的所有 以及大多数 示例来看 创建 dbml 文件的方法似乎只是将数据库的整个架构放入其中 并让它自动生成所有 linq to sql 的优点 看来您只需要其中一个 因为您
  • 如何打开控制台与 Express 应用程序交互?

    如何打开控制台与我的 Express 应用程序交互 我正在尝试测试某些方法是否可以创建模型 我正在使用 SequelizeJS 但这对于这个问题的答案应该不重要 我已经习惯了 Rails 我可以做的事情 heroku run rails c
  • 无法删除 webpack 捆绑 js 文件中的注释

    我一直在尝试删除 webpack 捆绑的 js 文件中的注释 我已经尝试了几种方法 但它仍然不起作用 我收到这样的评论 n Copyright 2013 present Facebook Inc n All rights reserved
  • MessageDialog ShowAsync 在第二个对话框上引发 accessdenied 异常

    我正在尝试在 Windows 8 中实现重试 取消对话框 该对话框第一次显示正常 但单击重试并再次失败时 我在调用 ShowAsync 时遇到访问被拒绝的异常 我不知道为什么 但奇怪的是有时代码工作正常 当我设置断点时我没有得到异常 这里真
  • 使用 Code First 对 3 个表之间的多对多关系进行建模

    我有以下 3 个实体 User Account Role 关系就像 一个用户可以拥有多个帐户 一个账户可以属于多个用户 每个用户在帐户中都有一个角色 有一些预定义的角色 在枚举 Roles 中定义 我到目前为止 public class U
  • 在 Heroku 环境中 POST 请求被视为 GET

    我有一个奇怪的案例 我有一个 RoR 应用程序 它提供了我从 Java 应用程序连接到的 REST API 我正在本地开发 RoR 并将其部署在 Heroku 环境中 不管如何 我尝试从 Java APP Mozilla REST 客户端等
  • 在 Python 中浏览文件和子文件夹

    我想浏览当前文件夹及其所有子文件夹并获取所有带有 htm html 扩展名的文件 我发现可以像这样确定一个对象是目录还是文件 import os dirList os listdir current directory for dir in
  • 如何在sql server中实现多列全文搜索?

    我正在尝试对我为其创建视图的两列实施全文搜索 VendorName ProductName 我有全文索引等工作 但实际查询是导致我出现一些问题的原因 我希望用户能够使用一些标准搜索约定 AND OR NOT 以及按 进行术语分组 这很好 但
  • 如何将具有相同类型项目的列表列表合并到单个项目列表?

    这个问题很混乱 但是通过下面的代码描述就清楚多了 List
  • 迭代器与 for

    在一次采访中有人问我使用迭代器比使用迭代器有什么优势for循环或使用有什么好处for循环迭代器 有谁可以回答这个问题吗 首先 for 循环有两种 它们的行为非常不同 一种使用索引 for int i 0 i lt list size i T
  • Django-Admin:来自 UserProfile 的 list_filter 属性

    我希望允许我的网站管理员在管理网站上过滤来自特定国家 地区的用户 所以自然的做法是这样的 admin py class UserAdmin django contrib auth admin UserAdmin list filter us
  • 使用iphone 5的后置麦克风

    我已经习惯了跟随code从麦克风传输音频的 I O 我想做的是想要选择后置麦克风进行录音 我读过将 kAudioSessionProperty Mode 设置为 kAudioSessionMode VideoRecording 可以完成这项
  • 如何在 yml 中获取我的配置值 - 使用 dropwizard (微服务) Jersey D.I @Injection?

    这是我的代码片段 这是我的 yml 文件 productionServer host production server amazonaws com publicIp xx xx xx xx privateIp xx xx xx xx us
  • 如何通过C#配置Outlook帐户?

    需要通过c 配置email 姓名 邮件服务器等 在不使用 Outlook Redemption 的情况下如何执行此操作 First 创建一个 PRF 文件 通过 NET 应用程序手动或动态 然后 要导入帐户 请使用命令行选项启动 Outlo
  • 为什么我们不将 .class 扩展名与“java”命令一起使用?

    为什么我们不给filename class之后归档java命令 而不是仅filename 假设我们要编译test java程序 然后我们运行javac test java 没关系 之后它会产生test class文件但运行我们运行的程序ja
  • 与 suPHP 一起实现登录

    如何设计类似登录的功能来使用 suPHP 的文件权限 例如 如果我有一个网站www example com以下两个用户有自己的主目录 每个用户都有一个 php 脚本test php and a validateUser php属于另一个用户