为了确保没有可以通过.htaccess利用的安全弱点,我们如何看到Apache可以通过像SetHanlder和AddHandler这样的指令来使用所有可能的处理器。 我知道我可以通过查看mod_info的输出或通过configuration文件进行grepping(这是我在find这个问题的答案时发现的一种方法)来find一些,但这并不意味着没有可用的处理程序这样列出。 我想我可以下载和searchApache的所有源代码和每个已加载的模块,看看他们正在注册什么,但有没有更好的方法? 一个快速的解决办法是不允许在.htaccess中的AddHandler和SetHandler,但是它有缺点。 例如,Drupal对SetHandler指令有一个有效的用例,因为它将它用作深层防御的一部分,以防止某人以某种方式通过file upload器将其上载到站点时运行PHP脚本。 以下是我所指的一些例子: AddHandler server-parsed .shtml SetHandler server-info AddHandler application/x-httpd-php5 .php 如果有人感兴趣的话,可以从网站/ default / files / .htaccess得到Drupal的用例: # Set the catch-all handler to prevent scripts from being executed. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006 <Files *> # Override the handler again if we're run later in the evaluation list. SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003 </Files> 编辑2015年7月30日:这不是一个详尽的答案,但万一它有助于任何人,我发现一些处理程序列在http://httpd.apache.org/docs/2.4/handler.html顶部,也阅读自定义处理程序可以通过Action指令创build(请参阅http://httpd.apache.org/docs/2.4/mod/mod_actions.html#action )。 编辑2015年9月1日:我不知道是否有一些方法来转储一个httpd进程的内存,并find那里的处理程序名称。 […]
我正在尝试处理Web请求的REQUEST_BODY,其中包含Content-Type:text / xml和其中的一些XML。 假设我有以下要求: curl -v -d " <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <value> <struct> <member> <name>SomeName</name> <value>SomeValue</value> </member> </struct> </value> </methodResponse> " -H "Content-Type:text/xml" http://gryzli.info/some_url.php 我需要的是能够将REQUEST_BODY与“SomeName”或“SomeValue”匹配为纯文本string。 我已经尝试了以下几点: 1.尝试在阶段2上匹配以下关键字: SecRule REQUEST_BODY "SomeValue" "phase:2, ….." – No success SecRule FULL_REQUEST "SomeValue" "phase:2, ….." – No success SecRule ARGS "SomeValue" "phase:2, ….." – No success 2.除了上面的规则,我试图以不同的组合激活这些规则: SecRule REQUEST_HEADERS:Content-Type […]
也许是一个简单的,但这使我感到困惑。 我正在运行一个EC2实例,它将Apache 2.2安装到该框中。 我没有权限访问a2enmod ,但是我需要将AllowOverride None更改为AllowOverride FileInfo作为我的应用程序安装到的默认/var/www/html目录。 这是在httpd.conf中configuration的,但我不希望SSH进入我的应用程序的每个新实例,并手动更改该设置。 我有一个构build脚本,将以下文件复制到/etc/httpd/conf.d/my-app.conf : <Directory "/var/www/html"> Options Indexes FollowSymLinks AllowOverride FileInfo Order allow,deny Allow from all </Directory> 这个不起作用,因为httpd.conf中加载conf.d/*.conf文件的部分在/var/www/html定义的部分之前 (因此AllowOverride被设置为None ) 。 我怎样才能configuration这个设置是我想要的(如FileInfo )而不需要手动编辑那个文件? 我需要这个脚本。
我尝试在centos 6 / apache 2.2上启动httpd,但出现以下错误: /etc/init.d/httpd start Starting httpd: [Sun Nov 08 20:47:36 2015] [warn] module php5_module is already loaded, skipping Syntax error on line 5 of /etc/httpd/conf/extra/httpd-directories.conf: Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration [FAILED] search后,我发现一些解决scheme,如改变 Order deny,allow Deny from all 至 Require all denied […]
我正在使用Apache mod_rewrite,我正在寻找基于QUERY_STRING的域dynamic设置RequestHeader的Host头。 我将如何dynamic设置Host ? 鉴于以下请求URL: https://example.com/p12?url=http://nonssldomain.com/331551/1041505584.jpg?dt=032620151151 我试过了: RewriteCond %{QUERY_STRING} ^url=(.*)$ [NC] #some regex to parse domain from Query_String (Doesn't work) RequestHeader set Host ^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:\/\n]+) RewriteRule ^.*/p12$ %1? [P,NC,L] 我需要dynamic设置一个variables吗?
我想要做的是设置一个重写规则,这样当一个URL被input时,它将显示为example.com/test 。 所以举个例子,我试图做到这一点,如果这是可能的。 我已经将site.example.com的CNAME设置为指向site.devexample.com (开发商的远程环境) 如果用户访问site.example.com则URL将重新写入这些行example.com/test 。 我到目前为止,但似乎没有工作,当我访问site.example.com它保持原样。 # rewrite rules for site.example.com RewriteCond %{http_host} ^site\.example\.com [NC,OR] RewriteCond %{http_host} ^www\.site\.example\.com [NC] RewriteRule $ http://example.com/test/ [R,L] 我需要做一个反向代理,然后从那里重新写? 编辑:我道歉,我应该更好一点解释。 site.example.com由test.com(A公司)拥有。 因此,我们将CNAME更改为指向site.devEnvironment.com(companyB.com) 而test.com/test是我们的服务器和目录,试图重写URL为test.com/test而不是site.example.com 我们的redirect在httpd.conf文件中设置,不知道这是否也有帮助
我试图在apache上通过模式glitter_calendar来阻止机器人的请求。 史前史。 我的服务器被机器人大量访问。 请求URI是… glitter_calendar .. wordpress返回404.服务器甚至每周下降一次。 我试图用Fail2ban阻止他们。 没有成功。 服务器负载不下降,我得到新的主机不断出现在我的iptables块规则。 在我的.htaccess我试图通过模式glitter_calendar添加一个块规则: # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{THE_REQUEST} ^.*(wpdffcontent)|(glitter_calendar)|(mp4:).* [NC] RewriteRule ^(.*)$ – [F,L] </IfModule> <Files xmlrpc.php> Order Deny,Allow […]
我们已经更新了我们的Apache部署configuration,以允许非www请求到我们的服务器( https://example.com )。 对于https连接,我们需要这样做,因为名称与证书不匹配。 这很好,最近我们注意到我们的本地部署安全环境( https://chris.example.com )也指向这个新的部署。 我们评论了新的部署,以确认这是造成它的变化。 我们推测这是来自我们设置的servername设置。 这是我们的初始设置: NameVirtualHost example.com:443 <VirtualHost example.com:443> ServerAdmin [email protected] DocumentRoot /var/www/html/www.example.com ServerName example.com SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLProtocol all SSLCertificateFile /usr/local/ssl/crt/example2017.cert SSLCertificateKeyFile /usr/local/ssl/private/ssl2017.key SSLCACertificateFile /usr/local/ssl/crt/example2017intermediate.pem DirectoryIndex index.html DirectoryIndex index.php LogLevel notice ErrorLog /var/log/httpd/www.example.com/error.log LogFormat "%{%Y-%m-%d %H:%M:%S}t %a %u %A %p %m %U %q %>s \"%{User-agent}i\"" w3c_extended CustomLog /var/log/httpd/www.example.com/access.log […]
用户请求: https://www.example.com/test : https://www.example.com/test HTTPS requests –> AWS ELB HTTPS Listener –> Apache HTTP 获取http://www.example.com/test Apache 由于DirectorySlash默认为On ,Apache将其redirect到http://www.example.com/test/ 。 用户结束HTTP请求: http://www.example.com/test/ : http://www.example.com/test/ AWS提供了HEAD来检测原始请求协议: %{HTTP:X-Forwarded-Proto} ,但是如何告诉Apache mod_dir DirectorySlash使用该头? 请在这种情况下通知您的解决scheme或解决方法。
我在我的Ubuntu笔记本电脑上安装了一个本地LAMP服务器,用于testing各种PHP脚本。 有时,当我做错了什么,而不是得到一个错误,我正在testing的脚本是提供下载。 为什么是这样的,如何解决?