marco3000

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');  
?>
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 317269

Url: https://administrator.de/forum/wp-plugin-zugriff-wordpress-login-nur-mit-gueltiger-ip-oder-getpass-function-317269.html

Ausgedruckt am: 30.04.2025 um 18:04 Uhr

step777
step777 08.10.2016 aktualisiert um 18:04:53 Uhr
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
Marco3000
Marco3000 08.10.2016 um 21:39:40 Uhr
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
step777
step777 09.10.2016 aktualisiert um 07:39:05 Uhr
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
Marco3000
Marco3000 09.10.2016 um 08:26:07 Uhr
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...
Marco3000
Marco3000 09.10.2016 um 20:09:24 Uhr
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!
step777
step777 15.10.2016 aktualisiert um 06:27:43 Uhr
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