Trochę tła -Czy można bezpiecznie przechowywać hasła w postaci zwykłego tekstu w MySQL * tymczasowo *?
Prowadzę serwer gry działający w Javie oraz forum działające w PHP (phpbb). Mam połączone konta gry i forum, tak że zmiana hasła w grze automatycznie zmienia hasło do konta na forum. Oba systemy używają różnych algorytmów hashowania haseł i muszę zaktualizować hash hasła po stronie forum za pomocą wbudowanych funkcji phpbb, co oznacza, że muszę je wywołać ze skryptu PHP (zamiast uruchamiać mój własny kod).
W tym celu postanowiłem wywołać skrypt PHP w języku Java, wysyłając żądanie HTTP do skryptu PHP za każdym razem, gdy trzeba zmienić hasło, aby uruchomić skrypt PHP, który zakończy proces zmiany hasła. konto na forum. Jednak nie chcę umieszczać hasła w postaci zwykłego tekstu w żadnym wywołaniu HTTP, ponieważ może ono być widoczne w plikach dzienników i być może w innych obszarach, które można wykorzystać. Mój obecny pomysł jest taki, że gdy strona Java zmienia hasła, umieszcza nowe hasło jawnego tekstu w tabeli bazy danych, a następnie wysyła żądanie HTTP, aby wywołać skrypt PHP, tak aby żadne hashe lub poufne informacje nie trafiały do żądania HTTP. Wywołanie HTTP przekazuje tylko nazwę użytkownika konta, które ma zostać zmienione, oraz skrót mieszania md5 wspólnego hasła oraz nazwę użytkownika do uwierzytelnienia. Po uruchomieniu skryptu PHP pobiera on nowe hasło w postaci zwykłego tekstu dla użytkownika z bazy danych, natychmiast usuwa je, a następnie uruchamia hasło w postaci zwykłego tekstu za pomocą algorytmu haszowania phpbb i aktualizuje bazę danych forum.
W typowych warunkach hasło w postaci zwykłego tekstu prawdopodobnie znajdowałyby się w bazie danych przez mniej niż sekundę przed usunięciem. Idealnie nie przechowywałbym go nigdzie w ogóle, ale nie jestem pewien, jak inaczej komunikować potrzebną zmianę z Java do PHP, gdy nie mogę przewidzieć, jakie będzie hasło do hasła forum, więc muszę jakoś wysłać hasło w postaci zwykłego tekstu do skryptu PHP, który wykonuje mieszanie.
Wszelkie pomysły na lepszy sposób, aby to zrobić, lub czy istnieje jakaś informacja zwrotna na temat przechowywania hasła jawnego tekstu przez bardzo krótki okres czasu? Uważam logowanie MySQL za bezpieczne i nie jest udostępniane innym osobom ani projektom.
Dzięki!
Czy możesz zaszyfrować go z Javy tuż przed zapisaniem go w DB i odszyfrowaniem go z PHP zaraz po przeczytaniu go z DB? – 0xFE
Szyfrowanie to przyzwoity pomysł, ponieważ podobno masz już wspólny sekret. A co z wysłaniem nazwy użytkownika i hasła jawnego do PHP poprzez HTTPS i POST, np. Dane formularzy? – slashingweapon
Co więcej, utwórz niestandardową wtyczkę do uwierzytelniania dla PHP BB https://wiki.phpbb.com/Authentication_plugins Obsługuje schematy uwierzytelniania niestandardowych haseł i powinna umożliwić skorzystanie z jednokrotnego logowania, jeśli dotyczy. –