marco3000
Goto Top

WP Plugin: Zugriff Wordpress-Login nur mit gültiger IP oder GETpass function

Hallo Ihr,

ich habe mal ein Script für eine Wordpress Login-Sperre gefunden. Da soll der Login nur von einer bestimmten IP möglich sein, oder
wenn man über einen bestimmten Link: https://website.de/wp-login.php?pass=passwort kommt.

Leider habe ich nicht so die Ahnung und bei mir funktioniert das mit dem Passwort Link nicht wenn ich mich von einer anderen IP-Adresse einloggen möchte.
Kann mir vielleicht jemand sagen wo in dem Script der Fehler liegt?

Vielen Dank und einen schönen Samstag euch noch!

<?php
/*
Plugin Name: My-IP
Plugin URI: #
Description: Nur IP oder ein bestimmtes Passwort
Author: Me
Version: 1.0
Author URI: #
*/

function sendthemhome_login_guard() {
  if ( $_SERVER['REMOTE_ADDR'] == '1.2.4.4') return;  
  
  if ( md5( $_GET['pass'] ) == 'MD5-Passwort' ) return;  

  $info  = count($_POST) ? "\n\nPOST-Vars:\n" . print_r($_POST, 1) : '';  
  $info .= count($_GET) ? "\n\nGET-Vars:\n" . print_r($_GET, 1) : '';  

  mail( 
    'mail-adresse',   
    'betreff mail',   
    'http://www.utrace.de/?query=' . $_SERVER['REMOTE_ADDR'] . $info  
  );

  header( 'Location: http://localhost' );  
  exit();
}
add_action('login_init', 'sendthemhome_login_guard');  
?>

Content-Key: 317269

Url: https://administrator.de/contentid/317269

Printed on: April 23, 2024 at 15:04 o'clock

Member: step777
step777 Oct 08, 2016 updated at 16:04:53 (UTC)
Goto Top
Grundsätzliche Frage - warum will man das per Plugin erreichen statt einfach per .htaccess?

Nur bestimmte IP auf URL zulassen
Passwortschutz per .htaccess

Gruß

step777
Member: Marco3000
Marco3000 Oct 08, 2016 at 19:39:40 (UTC)
Goto Top
Hallo Step777,

vielen Dank für deine Antwort!

Wenn das Ganze über htaccess auch zu realisieren ist, dann auch gerne so. Ich habe nur noch nichts derartiges gesehen.
Einen Passwortschutz per htaccess habe ich ja. Mir ging es darum das nur bestimmte IPs z.B. Home, Office etc. auf die login.php
zugreifen dürfen (das habe ich per htaccess schon gesehen). Aber wenn ich jetzt von einem Fremden PC z.B. Kunden zugreifen will,
habe ich die IP ja nicht in der htaccess stehen und könnte mich somit nicht einloggen. Dafür müsste dann eben ein Link vorhanden sein,
mit dem man quasi die IP sperre umgehen kann. Wie könnte sowas denn in der htaccess aussehen?

vielen Dank
Member: step777
step777 Oct 09, 2016 updated at 05:39:05 (UTC)
Goto Top
Moin,

Zum Beispiel so (ungetestet):

<Files wp-login.php>
AuthType Basic
AuthName Login
AuthUserFile /Pfad/zur/.htpasswd
require valid-user
Order allow,deny
Allow from 192.168.10.10 (deine IP1)
Allow from 192.168.10.11 (deine IP2)
Satisfy any
</Files>
 

Dabei sorgt die Direktive:
Satisfy any
dafür dass für den Zugriff nur eine der Bedingungen erfüllt sein muss
.
Schau mal hier oder hier (mit etwas anderer Syntax)

Gruß

step777
Member: Marco3000
Marco3000 Oct 09, 2016 at 06:26:07 (UTC)
Goto Top
Hallo Step777,

ja, da habe ich dann eben Passwort oder IP.
Ich hätte gerne immer die PW Abfrage gehabt und zusätzlich eben die richtige IP oder eben einen Parameter / Url.

Ich habe jetzt mal folgendes versucht, aber leider komme ich mit query string nicht so zurecht.

Die Url mit dem Query sollte doch so funktionieren:

https://domain.de/wp-login.php?admin=irgendwas

<Files wp-login.php>
AuthType Digest
AuthName "Intern"  
AuthDigestProvider file
AuthUserFile /www/www/www/.htdigest
Require user USER

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111 [OR]
RewriteCond %{QUERY_STRING} !^admin=irgendwas 
RewriteRule .* http://localhost [L]
</Files>

und seit ich rewrite drin habe, kommt auch die PW Abfrage nicht mehr... irgend etwas scheint da nicht zu passen...
Member: Marco3000
Marco3000 Oct 09, 2016 at 18:09:24 (UTC)
Goto Top
Ich habe jetzt mal folgendes versucht.

<Files wp-login.php>
AuthType Digest
AuthName "Intern"  
AuthDigestProvider file
AuthUserFile /www/www/www/.htdigest
Require user USER

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^111\.111\.111\.111
RewriteCond %{REMOTE_ADDR} !^222\.222\.222\.222
RewriteCond %{QUERY_STRING} !^admin=irgendwas
RewriteRule .* http://localhost [L]
RewriteCond %{QUERY_STRING} admin=irgendwas$
</Files>

Jetzt habe ich nur das Problem wenn ich:
RewriteCond %{QUERY_STRING} admin=irgendwas$
habe, dann wiederholt sich das ganze und ich lande auf "localhost"
Wenn ich diese Zeile raus nehme, habe ich das Problem das ich die Meldung 404 bekomme.

Wie kann ich den String "admin=irgendwas" nun entfernen ohne das ich wieder in der Schleife lande...
oder gibt es eine andere Möglichkeit dann zur wp-login.php zu kommen?

Vielen Dank!
Member: step777
step777 Oct 15, 2016 updated at 04:27:43 (UTC)
Goto Top
Moin, sorry für die späte Antwort.

Ich fürchte, ich bin da so langsam raus - das übersteigt meine Fähigkeiten bzgl. .htaccess und PHP.

Vielleicht kannst du in Kombination mit dem WPS-Hide-Login-Plugin und ein ähnliches Verhalten wie das von dir gewünschte erzielen.

Oder du fragst ein einem der Wordpress-Foren weiter:

forum.wpde.org
de.wordpress.org/support/

Gruß

step777