Dzisiaj na Facebookowej grupie WordPress PL pojawiło się następujące pytanie:
… potrzebuję plugin, który bez różnicy czy hasło będzie wpisywane z dużych czy z małych liter, będzie otwierał dostęp do danego wpisu, widział ktoś może coś takiego? …
Na pierwszy rzut oka takie rozwiązanie może wydawać się kiepskim pomysłem – przecież po to ustawiamy hasło, żeby dostanie się do wpisu nie było zbyt proste, a ignorując wielkość liter, dość znacznie zmniejszamy złożoność hasła. Ale… przecież ta złożoność nadal pozostanie całkiem spora, a poza tym, hasło do wpisu to nie to samo, co hasło do panelu administracyjnego.
Jeśli więc rzeczywiście mamy z tym problem i możemy w ten sposób ułatwić życie naszych czytelników, to czemu by nie spróbować? Tym bardziej, że wcale nie będzie to nas kosztowało tak wiele wysiłku.
Wystarczy użyć poniższego kodu (tym razem musimy użyć aż dwóch funkcji):
function prefiks_uppercase_post_password_before_hashing() {
if ( isset($_POST['post_password']) && ! empty($_POST['post_password']) ) {
$_POST['post_password'] = mb_strtoupper($_POST['post_password']);
}
}
add_action( 'login_form_postpass', 'prefiks_uppercase_post_password_before_hashing' );
function prefiks_uppercase_post_password_before_saving($data, $postarr) {
if ( array_key_exists('post_password', $data) && ! empty($data['post_password']) ) {
$data['post_password'] = mb_strtoupper($data['post_password']);
}
return $data;
}
add_filter( 'wp_insert_post_data', 'prefiks_uppercase_post_password_before_saving', 10, 2 );
Dodatkowe warianty i pytania
-
Dlaczego aż dwie funkcje? Nie da się jedną? 😉
- Jeśli użytkownik chce przeczytać wpis zabezpieczony hasłem, WordPress pokaże mu formularz. Po jego wypełnieniu, przesłane hasło zostanie zahashowane i zapamiętane w ciastku. To z tym hashem będzie porównywane potem hasło ustawione w panelu administracyjnym. Dlatego też nie możemy za bardzo zmienić sposobu, w jaki WordPress porównuje hasła. Musimy więc zmienić to, w jaki sposób hasła są zapisywane i hashowane.
-
Czy to bezpieczne?
- Oczywiście ignorując wielkość liter w haśle, zmniejszamy jego siłę. Natomiast nie jest to hasło do tajemnego skarbca, naszej bazy danych, czy panelu administracyjnego. Jeśli boisz się, że ktoś będzie je teraz mógł zbyt łatwo odgadnąć, to przedłuż je o jeszcze jeden znak – liczba możliwych haseł będzie większa. (Nie wierzysz? Sprawdź.