标签: php

如何检查服务器令牌是否关闭?

我们从渗透测试报告中得到反馈说我们应该关闭服务器令牌。这是阻止人们能够看到我们正在使用的 PHP 版本,并限制他们定位特定 PHP 版本的能力。

我在 nginx.conf 的 http 块下添加了以下内容:

server_tokens off;
Run Code Online (Sandbox Code Playgroud)

但是我可以使用哪些工具来检查此更改是否已生效?

php nginx

13
推荐指数
2
解决办法
3万
查看次数

如何在 Linux/Apache/PHP 上启用 SQLite?

要在我的Windows /Apache/PHP 设置上启用SQLite,我取消注释php.ini文件中的以下几行并重新启动 Apache:

extension=php_pdo.dll
extension=php_pdo_sqlite.dll
Run Code Online (Sandbox Code Playgroud)

现在我有一个带有Suse Linux 10.3VPS,并且自动设置了Apache/PHP。查看php.ini文件以进行上述更改,我发现 Linux 上的情况有些不同:

  • 没有取消注释的扩展列表
  • 我找到了“ extension_dir = /usr/lib/php5/extensions”,但在这个目录中只找到:
    • 文件
    • pdo_mysql.so

如何在此 Linux 环境中启用 SQLite?

linux php sqlite php.ini

12
推荐指数
2
解决办法
11万
查看次数

改进我们的部署策略

我们有一个在我们公司开发的电子商务应用程序。它是一个相当标准的 LAMP 应用程序,我们已经断断续续地开发了大约 3 年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的颠覆解决方案 (unfuddle.com) 中进行管理。在报告错误时,我们会在测试域上进行这些修复,然后在我们对错误已修复感到满意时将更改提交到 svn。我们遵循相同的程序添加新功能。

值得指出的是,我们的系统和应用程序在我们的服务器上的总体架构。每次开发新功能时,我们都会将此更新推广到使用我们的应用程序(始终是我们控制的服务器)的所有站点。使用我们系统的每个站点在 95% 的代码库中基本上都使用完全相同的文件。我们在每个站点中有几个文件夹,其中包含为该站点定制的文件 - css 文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。

这将进入实际部署本身。当我们准备好推出某种更新时,我们在测试站点所在的服务器上运行一个命令。这将执行复制命令 (cp -fru /testsite/ /othersite/) 并通过每个虚拟主机强制根据修改日期更新文件。我们托管的每个附加服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出我们不想被覆盖的文件,并在复制完成后将它们移回。我们的 rollout 脚本执行许多其他功能,例如应用 SQL 命令来更改每个数据库、添加字段/新表等。

我们越来越担心我们的流程不够稳定,不具备容错能力,也有点暴力方法。我们也意识到我们没有充分利用 subversion,因为我们有一个立场,即开发新功能会阻止我们推出重要的错误修复,因为我们没有使用分支或标签。我们在我们的服务器上有如此多的文件复制似乎也是错误的。我们也无法轻松地对我们刚刚推出的内容执行回滚。我们确实在每次推出之前执行差异,以便我们可以获得将要更改的文件列表,以便我们知道之后更改了什么,但回滚过程仍然存在问题。就数据库而言,我已经开始将 dbdeploy 作为一种潜在的解决方案。不过,我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地联系在一起,因此推出/回滚将更多地与 svn 相关联。类似于使用 export 命令来确保站点文件与 repo 文件相同。如果解决方案也可以停止我们服务器周围的文件复制,那也很好。

忽略我们目前的方法,听听其他人如何解决同样的问题会非常好。

总结...

  • 使跨多个服务器的文件与 svn 保持同步的最佳方法是什么?
  • 我们应该如何防止文件复制?符号链接/其他东西?
  • 我们应该如何构建我们的 repo 以便我们可以开发新功能并修复旧功能?
  • 我们应该如何触发推出/回滚?

提前致谢

编辑:

我最近阅读了很多关于使用PhingCapistrano执行此类任务的好文章。任何人都可以提供更多关于他们的信息以及他们对这种任务的表现如何?

php deployment svn lamp web-applications

12
推荐指数
1
解决办法
972
查看次数

为安全本地托管设置 Linux 机器的 A 到 Z

我正在一台机器上重新安装操作系统,该机器将用于为我们的业务托管几个应用程序。应用程序将仅限本地;来自外部客户端的访问将仅通过 VPN 进行。

之前的设置为大多数管理员使用了托管控制面板 (Plesk),我正在考虑使用另一个类似的软件进行重新安装 - 但我想我最终应该了解它是如何工作的。我可以做软件能为我做的大部分事情,但我不清楚这一切的共生关系。如果可能的话,这一切都是为了进一步远离Configuration Programmer/Programmer 领域

我无法在任何地方找到我正在寻找的完整演练,所以我想我会提出这个问题,如果人们可以帮助我,我将用答案编辑它,并记录我的进步/陷阱。希望有一天这会帮助某人下线。

细节:

  • CentOS 5.5 x86_64
  • httpd:Apache/2.2.3
  • MySQL:5.0.77(待升级)
  • PHP:5.1(有待升级)

要求:

  • 安全!!
    • 安全文件传输
    • 安全客户端访问(SSL 证书和 CA)
    • 安全的数据存储
    • 安全连接到另一台本地机器 (MySQL)
  • 虚拟主机/多个子域
  • 本地电子邮件会很好,但不是关键

步骤:

  • 下载最新的 CentOS DVD-iso(torrent 对我来说很好用)。

  • 安装 CentOS:
    在安装过程中,我检查了服务器组件选项,认为我将使用另一个类似 Plesk 的管理员。事后看来,考虑到我已经决定尝试走自己的路,这可能不是最好的主意。

  • 基本配置:
    设置用户、网络/IP 地址等。 Yum 更新/升级。

  • 升级 PHP/MySQL:
    要将 PHP 和 MySQL 升级到最新版本,我不得不查看 CentOS 之外的另一个存储库。IUS 看起来很棒,我很高兴我找到了它!
  • 将 IUS 存储库添加到我们的包管理器

    cd /tmp
    wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/epel-release-1-1.ius.el5.noarch.rpm
    rpm -Uvh epel-release-1-1.ius.el5.noarch.rpm
    wget http://dl.iuscommunity.org/pub/ius/stable/Redhat/5/x86_64/ius-release-1-4.ius.el5.noarch.rpm
    rpm -Uvh ius-release-1-4.ius.el5.noarch.rpm
    yum list | grep -w \.ius\. # list all …
    Run Code Online (Sandbox Code Playgroud)

    mysql php ssh centos apache-2.2

    12
    推荐指数
    1
    解决办法
    1587
    查看次数

    这是一次黑客攻击吗?

    查看我的 404 日志,我注意到以下两个 URL,它们都发生了一次:

    /library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ

    /library.php=../../../../../../../../../../../../../../../../../../../../../../../../proc/self/environ%00

    有问题的页面library.php需要一个type具有六个不同可接受值的id变量,然后是一个变量。所以一个有效的 URL 可能是

    library.php?type=Circle-K&id=Strange-Things-Are-Afoot

    并且在mysql_real_escape_string用于查询数据库之前,所有id都经过了处理。

    我是菜鸟,但在我看来这两个链接都是针对 webroot 的简单攻击?

    1)除了 404 之外,如何最好地防止此类事情?

    2)我是否应该永久禁止负责的 IP?

    编辑:也刚刚注意到这个

    /library.php=http://www.basfalt.no/scripts/danger.txt

    编辑 2:所有 3 次攻击的违规 IP 都216.97.231.15追溯到位于洛杉矶郊外的名为 Lunar Pages 的 ISP。

    编辑 3:我决定在当地时间周五早上致电 ISP,并与我可以通过电话联系的任何人讨论该问题。我会在 24 小时左右后在此处发布结果。

    编辑 4:我最后给他们的管理员发了电子邮件,他们首先回复说“他们正在调查”,然后一天后回复“现在应该解决这个问题”。没有进一步的细节,很遗憾。

    mysql security php hacking

    12
    推荐指数
    3
    解决办法
    3060
    查看次数

    Linux 上的 PHP:如何让 PHP 使用代理设置连接到互联网?

    我的服务器在局域网中,并通过代理服务器连接到互联网。我的 PHP 应用程序 (Drupal) 应该能够通过 PHP 代码检查更新。如何为PHP设置代理设置以使其正常运行?

    注意:我知道我可以在 curl 或其他东西中设置代理设置。但情况是代码不是我的,我不想改变它。我只是想让 PHP 始终通过特定的代理设置连接到互联网。

    linux php proxy

    12
    推荐指数
    2
    解决办法
    4万
    查看次数

    子文件夹中的 nginx 项目

    我对我的 nginx 配置感到沮丧,所以我要求帮助编写我的配置文件,以从同一根目录的子目录中提供多个项目。这不是虚拟主机,因为它们都使用相同的主机值。也许一个例子可以澄清我的尝试:

    • 请求192.168.1.1/应当成为index.php/var/www/public/
    • 请求192.168.1.1/wiki/应当成为index.php/var/www/wiki/public/
    • 请求192.168.1.1/blog/应当成为index.php/var/www/blog/public/

    这些项目使用 PHP 并使用 fastcgi。

    我目前的配置非常小。

    server {
        listen 80 default;
        server_name localhost;
    
        access_log /var/log/nginx/localhost.access.log;
    
        root /var/www;
        index index.php index.html;
    
        location ~ \.php$ {
            fastcgi_pass  127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME /var/www$fastcgi_script_name;
            include fastcgi_params;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我已经试过各种事情aliasrewrite,但没能得到的东西正确的FastCGI的设置。这似乎应该有比写位置的块,复制更雄辩的方式rootindexSCRIPT_FILENAME,等。

    任何让我朝着正确方向前进的指针都表示赞赏。

    php nginx fastcgi

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

    为什么PHP文件被下载而不是由Nginx处理?

    我看到了同样的问题,许多解决方案都指向添加类型处理程序,但那是针对 Apache 的。

    我正在使用 Arch Linux、Nginx、PHP 和 PHP-FMP,但我无法弄清楚为什么 php 文件正在下载而不是运行。

    这是我的 nginx.conf:

    #user http;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / { …
    Run Code Online (Sandbox Code Playgroud)

    php nginx php-fpm

    12
    推荐指数
    2
    解决办法
    3万
    查看次数

    PHP:在不提供直接链接的情况下提供文件以供下载

    我想提供发票以供下载。目前我正在使用一个简单的编号方案(invoice-01.pdf、invoice-02.pdf 等)。我知道我可以使用哈希来代替数据。

    是否也可以使用 PHP 并通过不直接让用户指向它们来提供发票?

    php

    12
    推荐指数
    2
    解决办法
    5万
    查看次数

    基于主机名的动态nginx域根路径?

    我正在尝试使用基本的 master/catch-all vhost 配置来设置我的开发 nginx/PHP 服务器,以便我可以根据需要创建无限的___.framework.loc

    server {
            listen 80;
            index index.html index.htm index.php;
    
            # Test 1
            server_name ~^(.+)\.frameworks\.loc$;
            set $file_path $1;
            root    /var/www/frameworks/$file_path/public;
    
            include /etc/nginx/php.conf;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    但是,对于此设置,nginx 会响应 404 错误。我知道 nginx 和 PHP 正在工作并且有权限,因为localhost我使用的配置工作正常。

    server {
            listen 80 default;
            server_name localhost;
            root /var/www/localhost;
            index index.html index.htm index.php;
    
            include /etc/nginx/php.conf;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我应该检查什么才能找到问题?这是他们正在加载的 php.conf 的副本。

    location / {
            try_files $uri $uri/ /index.php$is_args$args;
    }
    
    location ~ \.php$ {
    
            try_files $uri =404;
    
            include fastcgi_params;
            fastcgi_index index.php;
    
            # …
    Run Code Online (Sandbox Code Playgroud)

    php nginx virtualhost

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