这个让我很困惑,如果它不是特定于脚本的,那么它就是托管我的应用程序的AmazonAMI的问题。
我正在发布.htaccess和索引文件的确切内容。唯一的区别是我发送的电子邮件。
这是我的.htaccess文件
<IfModule mod_rewrite.c>
Options +FollowSymlinks
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteBase /
</IfModule>
Options -MultiViews
<IfModule mod_autoindex.c>
Options -Indexes
</IfModule>
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
这是我的index.php
<?php
mail('me@email.com', '', '7');
当我加载我的索引页面时,我会收到2封当前设置的电子邮件。但是,如果我注释掉RewriteRule并加载索引页面,我会正确地收到1封发送给我的电子邮件。
有人遇到过这种情况吗?
编辑:access_log通过RewriteRule 显示
[21/Feb/2013:03:48:27 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:48:27 +0000] "GET /favicon.ico HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
access_log在没有重写规则的情况下显示
[21/Feb/2013:03:47:58 +0000] "GET / HTTP/1.1" 200 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
[21/Feb/2013:03:47:58 +0000] "GET /favicon.ico HTTP/1.1" 404 295 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"
问题是,您将不存在文件的每个请求都路由到index.php
。浏览器将自动向http://yourdomain.com/favicon.ico当加载页面时。由于您的网站上还不存在此文件,index.php
再次受到攻击。您可以通过在index.php
中检查$_SERVER['SCRIPT_FILENAME']
来避免这种情况,并且仅在邮件应该是页面的情况下生成邮件(与图像文件等相反)。
例如:
if (!preg_match('/.(ico|jpg|png|gif|txt)$/i', $_SERVER['SCRIPT_FILENAME']))
mail('me@email.com', '', '7');
它检查ico
、jpg
、png
、gif
和txt
文件。
问题在于RewriteRule的不正确
这就是造成重复电子邮件的原因
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
修复方法是像这个一样在规则中添加"/"
RewriteRule ^/(.*)$ index.php/$1 [L,QSA]
我的假设是原始CCD_ 10没有正确捕获CCD_。正如N Rohler指出的那样,favicon.ico
正在被请求,但请求是以"/favicon.ico"
的形式发出的
其未被原始CCD_ 14 捕获