Powiadomienia
Wyczyść wszystko
Dodatkowe hasło do /wp-admin/ dla ekranu logowania
Wordpress - skrypty i rozwiązania
1
Wpisy
1
Użytkownicy
0
Reactions
15
Widoki
Witam,
Często /wp-admin/ (Wordpress) ma ataki i próby logowania - można to zabezpieczyć dodatkowym skryptem który dodajemy do pliku functions.php
Wklejamy go, ustawiamy własne hasło - teraz żeby zalogować się do WP-ADMIN musimy przejść przez bramkę.
Bramka trzyma 1h - cookies plik
Kod:
add_action('init', function () {
// tylko login i admin
if (
!preg_match('#/(wp-login\.php|wp-admin)#', $_SERVER['REQUEST_URI'])
) {
return;
}
// allow ajax, cron, rest
if (
defined('DOING_AJAX') ||
defined('DOING_CRON') ||
defined('REST_REQUEST')
) {
return;
}
// już przeszedł bramkę
if (!empty($_COOKIE['wp_pre_gate']) && $_COOKIE['wp_pre_gate'] === '1') {
return;
}
$error = '';
// submit
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['gate_nonce'])) {
if (!wp_verify_nonce($_POST['gate_nonce'], 'gate')) {
$error = 'Błąd zabezpieczeń.';
} elseif (($_POST['gate_pass'] ?? '') === 'TUTAJ_PODAJ_HASŁO!') {
setcookie(
'wp_pre_gate',
'1',
time() + HOUR_IN_SECONDS,
COOKIEPATH,
COOKIE_DOMAIN,
is_ssl(),
true
);
wp_safe_redirect($_SERVER['REQUEST_URI']);
exit;
} else {
$error = 'Nieprawidłowe hasło.';
}
}
// render BRAMKI (ZANIM WP)
?>
<!doctype html>
<html lang="pl">
<head>
<meta charset="utf-8">
<title>Dostęp zabezpieczony!</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
margin: 0;
height: 100vh;
display: grid;
place-items: center;
background: radial-gradient(circle at top, #1f2937, #020617);
font-family: system-ui, sans-serif;
color: #fff;
}
.gate {
background: #fff;
border: 1px solid #BD4D46;
padding: 36px;
border-radius: 16px;
width: 80%;
max-width: 380px;
box-shadow: 0 30px 80px rgba(0,0,0,.6);
}
h1 {
margin: 0 0 20px;
font-size: 18px;
text-align: center;
letter-spacing: .5px;
}
input {
width: 92%;
padding: 14px;
border-radius: 10px;
border: 1px solid #BD4D46;
background: #020617;
color: #BD4D46;
font-size: 16px;
}
button {
margin-top: 16px;
width: 100%;
padding: 14px;
border-radius: 10px;
border: none;
background: linear-gradient(135deg,#000,#000);
color: #fff;
font-size: 16px;
cursor: pointer;
}
.error {
margin-bottom: 12px;
text-align: center;
color: #fb7185;
font-size: 14px;
}
</style>
</head>
<body>
<form class="gate" method="post">
<h1>DOSTĘP ZABEZPIECZONY</h1>
<?php if ($error): ?>
<div class="error"><?= esc_html($error) ?></div>
<?php endif; ?>
<input type="password" name="gate_pass" placeholder="Hasło dostępu" autofocus required>
<?php wp_nonce_field('gate', 'gate_nonce'); ?>
<button>Kontynuuj</button>
</form>
</body>
</html>
<?php
exit;
});
Za zmianę czasu odpowiada ten fragment:
setcookie( 'wp_pre_gate', '1', time() + HOUR_IN_SECONDS, COOKIEPATH, COOKIE_DOMAIN, is_ssl(), true );
Jest to o tyle fajne że jeżeli ktoś zapomni się wylogować to po 1h musi podać hasło.
Czyli osoba postronna ma mniejszą szanse na dostanie się i nabrojenie jeżeli ktoś zapomni się wylogować.
Dodatkowo zmniejsza zawsze szanse na siłowe dostanie się do /wp-admin/ , oczywiście nie jest to nie wiadomo jakie zabezpieczenie - ale na pewno lepsze takie niż samo /wp-admin/
Ten temat został zmodyfikowany 1 miesiąc temu 3 razy przez David
Główny administrator i założyciel hostujmytanio.pl
Opublikowano : 18/02/2026 7:44 pm
Udostępnij:
Informacje o forum
- 9 Forum
- 21 Tematy
- 21 Wpisy
- 0 Online
- 3 Użytkownicy
Nasz najnowszy członek: Marcin
Ikonki forum:
Forum nie zawiera nieprzeczytanych wpisów
Forum zawiera nieprzeczytane wpisy
Ikonki tematu:
Bez odpowiedzi
Odpowiedział
Aktywny
Gorący
Przypięto
Niezatwierdzone
Rozwiązane
Prywatne
Zamknięte