2017-10-08 2 views
0

私はwp-login.phpへのリモートPOSTコマンドで覚えていることに気づいています(主にパスワードリセットを試みる)。私は返信アドレスを偽装することから保護していますが、これを受けているのはまだ迷惑です。だから、ログを見て、私はこれらの要求は、POSTコマンドを送信するすべてのリモートサイトです気づく:nginx同じページでない限り、wp-login.phpへのPOSTを拒否する

POST /wp-login.php?action=lostpassword HTTP/1.1" 302 5 "-" "-"

それでは、私がやりたいことのconfigure nginxの失われたパスワードから来ていないすべてのPOSTコマンドをブロックすることですリンクはwp-login.phpページからクリックしてください。これは可能ですか?

私が最初に(Wordpressのサイト上で提案)以下を使用してみましたが、それは(POSTMANでテスト)そのページへのアクセスを防ぐことはできません。

location ~* (wp-comments-posts|wp-login)\.php$ { 
     if ($http_referer !~ ^(https://example.com)) { 
      return 405; 
     } 
     } 

その後、私はそれで別のブロックを持っていることに気付いこのようなファイル:

location = /wp-login.php { 
    limit_req zone=one burst=1 nodelay; 
    include fastcgi_params; 
    fastcgi_pass php7; 
} 

私は次のようにそれを修正しようとしました:

location = /wp-login.php { 
    limit_req zone=one burst=1 nodelay; 
    include fastcgi_params; 
    fastcgi_pass php7; 

    if ($http_referer !~ ^(https://example.com)) { 
      return 405; 
     } 

} 

しかし、これは私が望んでいないブラウザでも、誰もがブロックします。ブラウザのwp-login.phpでパスワードを忘れてしまった人がwp-login.php?action=lostpasswordへのアクセスをブロックする方法はありませんか?

答えて

0

リフェラは簡単に偽装され、一般的に実現不可能です。セキュリティ目的では使用しないでください。

代わりに、プラグインを使用してURLに名前を変更してログインする必要があります。/wp-login.phpを/ letMeIn /または/ MyLogin /に変更します。ユーザーに告げるのは簡単ですが、弱いパスワードを探しているランダムなボットを完全に排除します。

あなたのウェブサイトに非標準のログインURIへのリンクを設定しても、ボットがあなたのサイトを分析していないので攻撃を試みるので、デフォルトのWordPressインストール。

方法のうちそれと

、現在のnginxの上で私のために罰金作品

if ($http_referer !~ "^https://example.org/") { return 403; } 
。そうでない場合は、ブラウザの開発ツールを使用して、送信されている実際のリクエストと、あなたのサーバーにRefererとして送信しているものを確認してください。

また、ホスト名の後に/を追加しました(ヘッダーは簡単に偽造されていても偽造には役立ちません)。https://example.org.example.comでは機能しません。

+0

私はログインページの名前を変更しないようにしようとしていましたが、あなたが正しいと結論しました。ありがとう! – Stephen

関連する問題