Jaki jest adres URL logowania użytkownika (inaczej Jak ukryć formularz logowania?)

10

Nie chcę zezwalać odwiedzającym na rejestrację na mojej stronie internetowej; uważam jednak, że potrzebuję jednego zarejestrowanego użytkownika do celów testowych. Na przykład opublikuję artykuł z ograniczonym dostępem, aby mój testowy użytkownik mógł zobaczyć, jak ten artykuł wygląda na stronie bez „wietrzenia brudnego prania” ogółowi społeczeństwa (ok, wszyscy 1 / dzień, którzy faktycznie odwiedzają ...) .

Mój problem w tej chwili polega na tym, że ostatecznie skończę ze stroną, ponieważ muszę opublikować / cofnąć publikację formularza logowania użytkownika. Obecnie „omijam” ten problem, ukrywając formularz logowania w podkategorii, aby nie był natychmiast widoczny dla zwykłego użytkownika. Czy można utworzyć alternatywną metodę (np. Niestandardowy adres URL), która pozwoli mojemu użytkownikowi testowemu na przeglądanie treści oznaczonych jako zastrzeżone bez zmiany tego, co zobaczy gość z dostępem publicznym?

bobthechemist
źródło

Odpowiedzi:

8

Możesz utworzyć menu, które nie zostanie opublikowane, i umieścić tam link do strony logowania użytkownika i nazwać alias, jak chcesz. Tak długo, jak wyłączysz funkcję zezwoleń na rejestrację w opcjach menedżera użytkowników, powinieneś być dobry.

Następnie po prostu podaj swojemu klientowi adres URL.

Kroki są następujące:

  1. Utwórz nowe menu, nazwij je Ukryte
  2. Nie publikuj modułu nowego menu
  3. Dodaj nowy element menu, wybierz Menedżer użytkowników i Formularz logowania
  4. Tytuł pozycji menu Zaloguj się lub coś, aby wiedzieć, co to jest, ale zmień alias na coś, czego nikt by nie zgadł.
  5. Przetestuj formularz, wchodząc na twoją stronę.com/aliasname
Brian Peat
źródło
10

Jako rozszerzenie odpowiedzi Briana Peata:

Jeśli przejdziesz na adres URL

domain.com/index.php?option=com_users&view=login

możesz się zalogować bez ustawiania pozycji menu lub jakiegokolwiek problemu z publikowaniem / cofaniem publikacji. Może to być określane jako problem w Joomla, ponieważ znając swoją drogę, możesz się zarejestrować / zalogować, jeśli znasz strukturę adresu URL. Istnieją reguły, aby temu zapobiec, ale zazwyczaj domyślnie możesz po prostu użyć takich bezpośrednich ścieżek, aby dostać się tam, gdzie musisz się udać.

http://www.joomla.org/index.php?option=com_users&view=login

Oto, jak działa, nawet główna strona Joomla, która nie ma bezpośredniego dostępu do logowania, jest dostępna w ten sposób.

Chodzi mi o to, upewnij się, że używasz również właściwej listy ACL, jeśli jej „tylko” zarejestrowani użytkownicy, to każdy, kto zna strukturę Joomla, może się dostać. Również, jak powiedział Brian, upewnij się, że zezwolenie na rejestrację jest wyłączone.

Jordan Ramstad
źródło
Czy istnieje analogiczny adres URL dla /index.php?option=com_users&view=logout (który moim zdaniem był intuicyjny, ale okazał się niepoprawny)?
bobthechemist
Masz na myśli automatyczne wylogowanie? To trochę dziwne, wylogowanie w Joomla wymaga pewnych danych postowych, stąd formularz / przycisk. Ten link prowadzi zasadniczo do przycisku.
Jordan Ramstad
Jeśli naprawdę martwisz się, że ludzie wejdą na tę stronę, możesz zainstalować fantazyjną wtyczkę, która zmusza użytkownika do używania tokena jako części adresu URL (wiem, że jest jeden dla administratora, jestem pewien, że jest on z przodu) koniec) ... ale możesz także zainstalować to: extensions.joomla.org/extensions/access-a-security/…, który blokuje adresy IP, jeśli użytkownik spróbuje powiedzieć 10 razy, aby się zalogować. Powiadomi cię również. Otworzy Ci oczy na to, jak często twoja strona jest atakowana. Zauważyłem, że 100% prób używa również nazwy „admin” jako nazwy użytkownika.
Brian Peat
Chciałem tylko powiedzieć, że nawet bez pozycji menu logowanie / rejestracja jest nadal dostępne. Jeśli więc konieczne jest zalogowanie się bez konieczności korzystania z pozycji menu, jest to możliwe, ale oznacza to również, że każdy może to zrobić. Jeśli rejestr nie jest zablokowany, każdy może również utworzyć konto i uzyskać dostęp do dowolnej „tajnej” strony, jeśli nie ma ACL, która mogłaby temu zapobiec. Można to zrobić, tworząc dodatkową grupę ACL i umożliwiając użytkownikowi dostęp do niej również w tej grupie. Ta strona również wymagałaby tej grupy.
Jordan Ramstad
Um, po co są listy ACL, jeśli nie jesteś jeszcze zalogowany. Rozumiem, że nigdy nie możesz ukryć publicznej strony logowania bez specjalnej wtyczki. Niezależnie od tego, z wyjątkiem ataków brutalnej siły, jeśli nie masz loginu, nie możesz dostać się bardzo daleko. Nie widzę sensu, żeby tak się z tym bawić.
Brian Peat
4

Powinieneś być w stanie to zrobić, zastępując układ formularza logowania do interfejsu użytkownika. Dodaj trochę kodu PHP u góry pliku układu. Ten dodany kod sprawdza niestandardowy parametr w adresie URL i określoną wartość. Jeśli ktoś próbuje uzyskać dostęp do strony logowania za pośrednictwem dowolnego adresu URL, ale nie zawiera parametru niestandardowego i określonej wartości (np. Abc = xyz ), wówczas kod wydaje „return;”; aby układ formularza nie był przetwarzany do wyświetlenia.

Dzięki temu kodowi w nadrzędnym pliku układu tylko użytkownik znający adres URL (który zawiera ten parametr niestandardowy i dopuszczalną wartość) będzie mógł korzystać z tego formularza logowania.

Na przykład: Tajny adres URL może być

mydomain.com/?option=com_users&view=login&abc=xyz

Następnie dodaj ten kod w górnej części nadrzędnego pliku układu formularza logowania:

if(JFactory::getApplication()->input->get('abc')!='xyz'){
    return;
}
RCarey
źródło
Dobry pomysł! Jest to dość łatwe rozwiązanie, aby wyłączyć widok. W razie potrzeby można go rozszerzyć również na moduł (chociaż moduł nie ma bezpośredniego adresu URL dostępu).
Jordan Ramstad
3

Często napotykałem podobny problem, ponieważ często potrzebuję frontonu do edycji stron internetowych, którymi zarządzam, bez konieczności posiadania formularza logowania. Skończyło się tworzenie małej zakładki , którą dodałem do paska narzędzi przeglądarki. Jest to oczywiście bardzo „lokalne” rozwiązanie, ponieważ bookmarklet jest dostępny tylko dla mnie (lub każdego, do kogo skopiuję kod), ale działa na KAŻDEJ stronie Joomla i jest niesamowitą oszczędnością czasu, wystarczy kliknąć link i formularz logowania pokaże się (biorąc pod uwagę, że jesteś na stronie Joomla, oczywiście ...).

 javascript:void((function(){var loc = location.href; loc.indexOf("?") == -1 ? (location.href = loc+"?option=com_users&view=login") : (location.href = loc+"&option=com_users&view=login");})());
johanpw
źródło