标签: php

与 Kerberos、IE、Firefox、LDAP Active Directory 的无缝 SSO

Alias /students /var/www/students

<Location /students>
  KrbServiceName HTTP
  KrbMethodNegotiate On
  KrbMethodK5Passwd On
  KrbSaveCredentials off
  KrbAuthRealms DOMAIN.LOCAL
  Krb5KeyTab /etc/httpd/keytab
  KrbAuthoritative off

  AuthType Kerberos
  AuthName "Please Login"
  AuthBasicProvider ldap
  AuthzLDAPAuthoritative on
  AuthLDAPURL "ldap://dc.domain.local:389/OU=Domain Users,DC=domain,DC=local?userPrincipalName?sub?(objectClass=*)"
  AuthLDAPBindDN "CN=ldapsearchuser,CN=Users,DC=domain,DC=local"
  AuthLDAPBindPassword ldapsearchuserpass
  require ldap-group CN=Students,CN=Users,DC=domain,DC=local
  require ldap-group CN=Staff,CN=Users,DC=domain,DC=local
</Location>
Run Code Online (Sandbox Code Playgroud)

这允许所有属于学生/教职员工 AD 组的用户访问http://intranetsite/students后面的页面,而无需指定登录凭据,前提是他们的 IE/Firefox 配置正确。

使用 userPrincipalName 而不是 sAMAccountName 因为 kerberos 模块将 username@REALM 传递给 ldap 模块。

现在我遇到的问题是,如果有人未经授权,他们会看到:

需要授权 此服务器无法验证您是否有权访问所请求的文档。要么您提供了错误的凭据(例如,错误的密码),要么您的浏览器不了解如何提供所需的凭据。

有谁知道如何让它弹出用户名/密码对话框,以便他们可以尝试替代凭据?在未成功获得授权后,我可以让它要求凭据的唯一方法是清除我的缓存。如果我以经过身份验证的用户身份登录到 PC,但没有获得此资源的授权,我将无法提供备用凭据(这可能是一件好事)。

php active-directory ldap kerberos apache-2.2

6
推荐指数
1
解决办法
6697
查看次数

如何在 nginx 的子位置中全局使用 FastCGI 和基本身份验证?

我最近部署了我的第一个 nginx 设置,一切都非常好,除了位置解析让我发疯。我有一个简单的 php fastcgi 设置,如下所示:

location ~ \.php {
    if (!-e $request_filename) {
            return 404;
    }

    include /etc/nginx/fastcgi.conf;
    keepalive_timeout 0;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
}
Run Code Online (Sandbox Code Playgroud)

现在我想用这样的基本身份验证来保护一些位置:

 location /madmin {
         auth_basic "Restricted";
         auth_basic_user_file /var/www/localhost/admincp/.htpasswd;
 }
Run Code Online (Sandbox Code Playgroud)

使用他的设置,nginx 在访问 /madmin 时会要求输入密码,但不会在 /madmin/foo.php 上询问。如果我将身份验证位置更改为“位置 ~ ^/madmin”,那么 nginx 将提供 php 文件以供下载...

是不是可以在 nginx 中配置多个位置?如果没有,这里的解决方法是什么?

谢谢你的帮助。

php nginx

6
推荐指数
1
解决办法
1万
查看次数

Apache/Linux 上的 PHP 输出缓冲区刷新问题

我在 Linux Web 服务器上遇到了 PHP 输出缓冲区刷新的问题。输出缓冲区得到正确维护,所有正确的数据都在我的代码中推送到它,但通常的刷新机制不会将其刷新到浏览器。我已经尝试了这里发布的所有内容:http : //php.net/manual/en/function.flush.php但到目前为止没有成功。

我从 php.net 得到了一个小脚本来测试它:

<?php
    ob_start();
    for($i=0;$i<70;$i++)
    {
        echo 'printing...<br />';
        ob_get_flush();
        flush();
        usleep(300000);
    }
?>
Run Code Online (Sandbox Code Playgroud)

这应该向浏览器打印“正在打印...”70 次,每三秒一行。这在我的其他基于 Windows 的测试环境(仍然使用 apache、XAMPP 包)上运行良好,但在我的 Linux 服务器上却没有。它在向浏览器提供任何内容之前等待脚本完成,基本上忽略整个刷新命令。

如果有人以前经历过这种情况或知道任何可以提供帮助的东西(无论是服务器配置还是代码调整),我们将不胜感激!

linux php apache-2.2

6
推荐指数
1
解决办法
1万
查看次数

我的第一台服务器有什么安全提示吗?(完全初学者)

我正在为VPS付费,并希望在接下来的几天内推出我的第一个网站。

我担心标准设置中可能存在一些明显的安全漏洞,所以我很想得到一些提示。我唯一知道的是关闭 PHP 中的错误报告并为 MySQL 创建用户/权限。还有更多类似的东西吗?

我正在使用:

  • cPanel 和 WHM
  • CentOS 5
  • PHP
  • MySQL
  • Google 应用程序作为邮件服务器(所以也许我应该以某种方式禁用内置邮件服务器?!)

mysql security php apache-2.2

6
推荐指数
1
解决办法
839
查看次数

允许 Apache 以不同的用户身份运行命令

我有一个脚本,可以在用户的​​主目录中执行多个命令。这些文件归用户所有,Apache(www-data组)对它们只有读取权限。该脚本需要由 PHP 通过 按需执行exec(),并执行一些文件的删除/解压缩,由于 Apache 没有对目录的写权限,因此失败。

我试过sudoers像这样编辑文件:

www-data ALL=(user) NOPASSWD: /bin/su user -c /home/user/bin/script.sh
Run Code Online (Sandbox Code Playgroud)

但它提示我输入用户的密码

我也试过

www-data ALL=(root) NOPASSWD: /usr/bin/sudo su user -c /home/user/bin/script.sh
Run Code Online (Sandbox Code Playgroud)

但这会提示输入www-data's sudopassword

如何在没有密码的情况下使其工作?

linux php sudo apache-2.2

6
推荐指数
1
解决办法
3万
查看次数

如何在 PHP 中启用 IMAP 功能?

我有一个运行 Ubuntu、Apache 2 和 PHP5 和 Slicehost 的 LAMP 盒子。我对所有这些系统管理员的东西都有些陌生(我主要是一名 Web 开发人员)。

我需要在 PHP 中使用 IMAP 函数,但根据 phpinfo() 似乎没有启用它们。我如何启用它们?

我在网上能找到的所有信息都说我需要重新编译 PHP 才能添加它,但我不知道如何做到这一点。

任何建议将不胜感激。谢谢。

php imap slicehost php5 apache-2.2

6
推荐指数
2
解决办法
7万
查看次数

如何在 Ubuntu Server 10.04 for PHP 上设置 Memcached/APC?

我很快就会在新的 Ubuntu Server 10.04 VPS 上建立 Simple Machines 论坛。论坛软件是用PHP编写的。我将使用 Nginx 作为 Web 服务器,我将按照指南在其上安装 PHP-FPM:http : //constantshift.com/install-php-fpm-5-3-2-on-ubuntu-10- 04-lucid-lynx/

但该指南并未真正解释有关设置 Memcached 或 APC 以进行缓存的任何内容。在环顾网络,搜索此站点并搜索 Stack Overflow 之后,我仍然缺乏如何成功设置这些的答案。

任何人都可以提供信息、指南、链接方面的帮助吗?非常感激。

ubuntu php memcached

6
推荐指数
1
解决办法
1万
查看次数

数据库一次次被黑;已经为 SQL 注入清理了站点

我有一个客户让我尝试分析一个网站的漏洞。

发生的事情是,每个周末左右,数据库中一张表的一条记录的字段每次都会更改为相同的内容。从Jewelry到Jewelery <a href="http://[**REMOVED-FOR-SF**]/viewPress?press_id=407">[**REMOVED-FOR-SF**]</a><a href="http://[**REMOVED-FOR-SF**]/[**REMOVED-FOR-SF**].html">[**REMOVED-FOR-SF**]</a>。它总是相同的记录这一事实让我认为它是某种自动脚本,但如果是,我找不到它。

已完成以下工作:

  • 修复 SQL 注入漏洞
  • 在 777 个目录中阻止 PHP 执行
  • 每次修复后更改数据库密码
  • 每次修复后更改 CMS 密码

下一步是什么?

mysql php hacking

6
推荐指数
1
解决办法
590
查看次数

如何从 VirtualDocumentRoot 更新我的 php DOCUMENT_ROOT 变量

我在我的虚拟主机配置中使用 VirtualDocumentRoot。

我的 VirtualDocumentRoot 设置为 /var/www/%1/,如果我创建一个文件夹说 test,它会按预期工作。问题是,当我在我的 php 文件中使用 $_SERVER["DOCUMENT_ROOT"] 时,它正在重新调整 /var/www。是否可以让 php 为 $_SERVER["DOCUMENT_ROOT"] 返回与 VirtualDocumentRoot 中配置的相同的路径。

php apache-2.2

6
推荐指数
1
解决办法
2505
查看次数

Apache 在生产环境中的 Windows 上?为什么不?

“每个人”都知道 Apache 适用于 Linux/Unix,而在 Windows 上 IIS 是必经之路。

但是,我不是 Linux 专家,如果在生产环境中使用与开发过程中使用的设置相同的设置,那将是一种极大的解脱。我是一名独立开发人员,我正在努力使事情尽可能简单。我已经摆脱了其他问题,例如存储(-> 云)电子邮件(-> 邮戳)。

那么,当我将 Apache 放在来自 Rackspace 的 Windows 虚拟专用服务器中并将其用作PHP 项目的主要生产环境时,可能会发生什么真正的缺点?与不必学习不同操作系统的可能性相比,获得更多 VPS 资源的钱并不是什么大问题。

预计不会出现超大流量。我的 PHP 项目也可以相当优化。有一些繁重的脚本,但仅适用于内部(登录)用户。所有其他的都可以或多或少地静态提供。

windows php scalability apache-2.2

6
推荐指数
1
解决办法
5992
查看次数