2016-09-20 11 views
2

私のサーバーではTimThumbをプラグインとして使用してイメージをサイズ変更します。TimThumbを書き換えてメールに使用する方法

Google Gmailの出力https://example.com/thumb.php?sr+c=src属性(プラス記号に注意してください)として出力します。

私はhereを読んでいます。これはクエリのためです。

.htaccessを使用してURLを書き換えて/thumb.php?src=/src/に削除するにはどうすればよいですか?

これは、それが画像へのリンクがどのように見えるかです:

https://example.com/thumb.php?src=example.jpg 

これは私がこれは私の現在の.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L] 
RewriteRule ^explore/([^/]+)/?$   index.php?a=explore&filter=$1 [NC,QSA,L] 
RewriteRule ^page/([^/]+)/?$   index.php?a=page&filter=$1  [NC,QSA,L] 
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA] 

index.phpthumb.phpあるある

https://example.com/src/example.jpg 

を必要とするものです両方のルートフォルダに

UPDATE

私は私の.htaccessに次の行を追加し、https://example.com/src/example.jpgを訪問しようとしたが、再び、それは「歓迎」のページにリダイレクトし、この場合には、働いていません。

RewriteRule ^src/([^/]*)$ /thumb.php?src=$1 [L] 

私もこれを試してみました

第二UPDATE:

RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L] 

再びそれはhttps://example.com/src/example.jpgは私の "歓迎" のページにリダイレクト働いていません。

これはこれは私が、私はできないのsrcクエリ

$_GET['src'] = 'https://s3-eu-west-1.amazonaws.com/bucket1'.'/'.$_GET['src']; 

を構築する方法である、それは今の私の.htaccessをどのように見えるかthumb.phpインサイド

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L] 
RewriteRule ^explore/([^/]+)/?$   index.php?a=explore&filter=$1 [NC,QSA,L] 
RewriteRule ^page/([^/]+)/?$   index.php?a=page&filter=$1  [NC,QSA,L] 
RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L] 
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA] 

第三UPDATE

です何が間違っているのか分かりました。ウラジミールCveticの回答に基づいて

第四UPDATE

私はこれを試してみました:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
RewriteRule ^src/(.*)$ /thumb.php?src=$1 [L,QSA] 
RewriteRule ^welcome/([^/]+)/?$ index.php?a=welcome&filter=$1 [NC,QSA,L] 
RewriteRule ^explore/([^/]+)/?$   index.php?a=explore&filter=$1 [NC,QSA,L] 
RewriteRule ^page/([^/]+)/?$   index.php?a=page&filter=$1  [NC,QSA,L] 
RewriteRule ^src/([^/]+)/?$ thumb.php?src=$1 [NC,QSA,L] 
RewriteRule ^(([^/]+)+)(/([^/]{0,32})(/.+)?)?$ index.php?a=$1&q=$3 [L,QSA] 

そして再び、それは働いていない、これは誤りです:

`The 't' parameter is not set.` 

しかし、それは以来、奇妙です私は以下のように 't'パラメータ条件を空に設定しました:

if(!empty($_GET['t'])) { 
    if($_GET['t'] == 'a') { 
     $type = 'uploads/avatars'; 
     $width_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300); 
     $height_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300); 
    } elseif($_GET['t'] == 'b') { 
     $type = 'uploads/backgrounds'; 
     ... 
    } else { 
     exit('Invalid parameter value'); 
    } 
} else { 
    $_GET['t'] == 'a'; 
     $type = 'uploads/avatars'; 
     $width_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300); 
     $height_list = array(25, 35, 50, 70, 100, 112, 150, 200, 300); 
} 

は確かに私はhttps://example.com/thumb.php?src=example.jpgを訪問する場合、私は正しく

+1

直接答えはありませんが、Timthumbの使用を中止してください。これは[数多くのセキュリティ問題](https://blog.sucuri.net/2011/08/timthumb-php-security-vulnerability-just-the-tip-of-the-iceberg.html)の主題であり、 2014年以来維持されていない](https://www.binarymoon.co.uk/2014/09/timthumb-end-life/)。この時点で引き続き使用することは非常に危険です。 – duskwuff

+0

新しいルールはどこに配置しましたか?最後に追加するだけであれば、その前に来るルールはすでにindex.phpにリクエストを書き換えている可能性が最も高いでしょう。少なくとも最後の既存ルールの前に試して配置してください。 – CBroe

+1

.htaccessに変更を加えてもWebサーバーの再起動は必要ありません.htaccessファイルはすべての要求で読み込まれます。 //あなたが試みた完全に変更されたルールセットを表示するために質問を編集してください。 – CBroe

答えて

0

これはトリックを行う必要がアバター画像を見ることができます: RewriteRule ^src/(.*)$ /thumb.php?src=$1 [L,QSA]

TimThumbは、私の知る限りではここ数年のためにメンテナンスされていないで、というセキュリティ上の問題を持っています攻撃者はサーバー上でコードを実行できます。 google searchは、ほとんどのTimThumbの脆弱性を明らかにするでしょう。

私は維持パッケージに移行することをお勧めします。

+0

あなたの答え、可能性のある攻撃と脆弱性に関するおかげで、私はAWS EC2経由でssh接続を使用しています。サーバ側ではfail2banなどを使用しています。私はあなたの解決策を試してみました。私は質問を更新しました。どうぞ見て、今何が間違っているのか教えてください。 – NineCattoRules

+0

@SimonLeCat詳細なエラーを送信できますか?その行にエラーが生成されていますか?さらに、なぜ、 '' $ _GET ['t'] ''が必要なのか分かりません。なぜなら、両方の場合で同じ結果を生むからです。 –

+0

質問を更新しました。第4回目のアップデートでわかるように、 't'パラメータは 'a'と異なる場合があります。 'The 't'パラメータが設定されていないより詳細なエラーはありません。私のLinuxサーバのChromeコンソールと 'tail -f/var/log/apache2/error.log'からエラーログは表示されません。 – NineCattoRules

関連する問題