Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zabezpieczenie strony hasłem
Forum PHP.pl > Forum > PHP
wolfen3
  1. <form action="page.php" method="post">
  2. <p>Podaj hasło<br><br>
  3. <input type="pass" NAME="haslo" />
  4. <input type="submit" VALUE="OK">
  5. </form>





  1. <?php
  2.  
  3.  
  4. function checkPass()
  5. {
  6. $haslo = $_POST["haslo"];
  7. if($haslo <> "MOJE SUPER TAJNE HASLO"){
  8. return false;
  9. }
  10. else{
  11. return true;
  12. }
  13. }
  14.  
  15. if(isSet($_POST["haslo"]) && checkPass())
  16. {
  17.  
  18. include ('costam.php');
  19. }
  20.  
  21. else
  22. {
  23.  
  24. //echo 'Nieprawidłowe hasło <a href="index.php">Spróbuj ponownie</a>';
  25. include 'bad.php';
  26. }
  27.  
  28. ?>



Witam !

Czy jest jakakolwiek możliwość aby obejść taki skrypt hasła ?
MateuszS
hasla odgadnac sie nie da za bardzo ale wystarczy wejsc na adres costam.php i mamy panel

w ogole nie zabezpieczasz sesja logowania ;p
wolfen3
ok ale musiałbyś zgadnąć ten adres aby na niego wejsc prawda ?

a jak zabezpieczyc taką sesje ?
Fifi209
Cytat(wolfen3 @ 5.10.2009, 22:32:03 ) *
ok ale musiałbyś zgadnąć ten adres aby na niego wejsc prawda ?

To chyba logiczne
Cytat(wolfen3 @ 5.10.2009, 22:32:03 ) *
a jak zabezpieczyc taką sesje ?

Nie taką sesję, tutaj w ogóle nie używasz mechanizmu sesji. Poczytaj w pierwszym lepszym kursie co to są sesje.
djbarca
nawet jak ktos Ci zgadnie sciezke dostepu do pliku z panelem zawsze mozesz zadefiniowac zmeinna na stronie np

  1. define(BLOKUJEMY,true);

a w pliku z panelem dodac
  1. if (!defined('BLOKUJEMY') || !BLOKUJEMY) {
  2. header('HTTP/1.1 301 Moved Permanently');
  3. header('Location: http://'.$_SERVER['HTTP_HOST'].'/');
  4. }
wolfen3
kurde no i znów ktoś mi wszedł na moją stronę nie znając hasła które było w tym skrypcie. Jak to dobrze zabezpieczyc ?

Jak to jest możliwe że on to przechodzi ?

Wiem że w jakiś sposób omija to hasło, bo po kliknięciu w przycisk zaloguj przechodzi do innej podstrony php która loguje IP które wpisało hasło prawidłowo oraz nieprawidłowo
Fifi209
Cytat(wolfen3 @ 6.10.2009, 19:24:29 ) *
kurde no i znów ktoś mi wszedł na moją stronę nie znając hasła które było w tym skrypcie. Jak to dobrze zabezpieczyc ?

Jak to jest możliwe że on to przechodzi ?

Wiem że w jakiś sposób omija to hasło, bo po kliknięciu w przycisk zaloguj przechodzi do innej podstrony php która loguje IP które wpisało hasło prawidłowo oraz nieprawidłowo

A czytałeś w ogóle co to są sesje ?
wolfen3
Cytat(fifi209 @ 6.10.2009, 18:15:21 ) *
A czytałeś w ogóle co to są sesje ?


Tak czytałem. Jak to jest możliwe że przeszedł on ten prosty skrypt ? Znał hasło czy nie ?
Fifi209
Cytat(wolfen3 @ 6.10.2009, 20:18:48 ) *
Tak czytałem. Jak to jest możliwe że przeszedł on ten prosty skrypt ? Znał hasło czy nie ?


Nas się pytasz czy znał ? Może to Twój kumpel? Czytałeś o sesjach, dlaczego nie zastosowałeś ich ?
wolfen3
Nie mój kumpel, a w poprzednim pytaniu chodziło mi o to czy w JAKIKOLWIEK sposób mógł to hasło poznać ? Bo skoro jest ono zapisane w pliku php to raczej nie, prawda ? Nie zastosowałem sesji bo ich nie rozumiem.
blooregard
Nie rozumiesz również odpowiedzi na Twoje pytania.
@MateuszScirka dokładnie podał Ci odpowiedź, jak można obejść Twoje "zabezpieczenie":
Cytat
hasla odgadnac sie nie da za bardzo ale wystarczy wejsc na adres costam.php i mamy panel

wolfen3
Cytat(blooregard @ 6.10.2009, 21:18:32 ) *
Nie rozumiesz również odpowiedzi na Twoje pytania.
@MateuszScirka dokładnie podał Ci odpowiedź, jak można obejść Twoje "zabezpieczenie":


Aha, a powiedz mi , skoro ty wszystko rozumiesz, w jaki sposób osoba ta może poznać adres tej strony która jest w include ?
blooregard
Cytat
a powiedz mi , skoro ty wszystko rozumiesz,

Ja nigdzie nie napisałem, że wszystko rozumiem.
A mogła odgadnąć metodą prób i błędów, tak samo, jak odgaduje się najpopularniejsze hasła. Po prostu ktoś miał fart, wpisując "costam.php". No i trafił.
wolfen3
Cytat(blooregard @ 6.10.2009, 21:42:07 ) *
Ja nigdzie nie napisałem, że wszystko rozumiem.
A mogła odgadnąć metodą prób i błędów, tak samo, jak odgaduje się najpopularniejsze hasła. Po prostu ktoś miał fart, wpisując "costam.php". No i trafił.


Ja pier.... to costam.php to sobie wpisałem dla PRZYKŁADU exclamation.gif! tak jak wszystkie inne nazwy w tym kodzie. Skrypt skopiowałem z pierwszej lepszej stronki na której ludzie chwalili go że jest "bomba". A mimo to ktoś cwańszy nie wiem w jaki sposób umie go obejść. Po pierwszym "włamie" pozmieniałem wszystkie nazwy plików które biorą udział w "logowaniu". Drugi "włam" - znów pozmieniałem, hasło, nazwy plików. Trzeci "włam" zmieniłem własnie na ten skrypt który tutaj skopiowałem. Dzisiaj znów był czwarty włam. Teraz już sobie z tym poradziłem bo logowania na .htaccess cwaniak nie przejdzie. Ale BARDZO ciekawi mnie w jaki sposób on obszedł ten skrypt, skoro na 100% nie zna strony z panelem, na 99% nie zna hasła.
blooregard
Cytat
Ja pier.... to costam.php to sobie wpisałem dla PRZYKŁADU

Widocznie to, co wpisałeś nie dla przykładu, a w żywym skrypcie, też nie było trudne do odgadnięcia.
wolfen3
Cytat(blooregard @ 6.10.2009, 21:59:51 ) *
Widocznie to, co wpisałeś nie dla przykładu, a w żywym skrypcie, też nie było trudne do odgadnięcia.


heh...


czy myślisz że nazwę pliku typu "3eufow.php" lub "3dfj32iofj2o3.php" łatwo odgadnąć ?

ale nawet nie chodzi o to. Jest plik index.html który wysyła post'em hasło na skrypt mojplik.php (nazwa przykładowa)
w mojplik.php jest funkcja właśnie ta podana wyżej czyli

  1. function checkPass()
  2. {
  3. $haslo = $_POST["haslo"];
  4. if($haslo <> "tajnehaslo"){
  5. return false;
  6. }
  7. else{
  8. return true;
  9. }
  10. }


dalej jest warunek if
  1. if(isSet($_POST["haslo"]) && checkPass())


Jeżeli hasło jest OK, to zapisuje IP do pliku tekstowego ze jest prawidlowo zalogowany i includuje mu plik "tralalalala.php"
Jezeli haslo jest złe, to zapisuje IP do pliku i includuje inny plik.

I własnie widze po tym pliku tekstowym, IP tego kolesia. IP jest z warszawskiego GTS. Potem gdy go przekierowuje na plik "tralalalal.php" to wpisuje jakieś pierdoły i próbuje zamówić rzecz za którą nie zapłacił smile.gif

Czyli zakańczając ten wątek na forum. Jedyną możliwością jest to że ten ktoś zna hasło ?
deha21
Nie znam się aż tak ale dzisiaj widziałem jakiś temat i takiego znaku <> niestosuje się w php, zamiast tego jak dobrze pamiętam != .

Możesz to zabezpieczyć m.in hashowaniem hasła (np. MD5 lub SHA1). Do tego jeszcze filtracja danych.
Dumdas
Nazwę pliku może generować skrypt (tak samo, jak hasło) lecąc po kolei po wszystkich literach i cyfrach. Problem jest tlyko taki, że im więcej liter ma hasło(i nazwa pliku), tym dłużej trzeba, by je odgadnąć. Nie do złamania (z powodu czasu) są w ten sposób hasła 15 znakowe i większe (dla 15 znakowego hasła z samych liter małych i cyfr jest 1555098314991537910888601 kombinacji).
Ale wracając do zabezpieczenia:
1. Sprawdzaj za każdym razem hasło zapisane w sesji (jeżeli nie rozumiesz, to ułatwię: na początku każdego pliku dajesz session_start(); i potem $_SESSION['haslo'] = $_POST['haslo']winksmiley.jpg.
2. Sprawdzaj IP wchodzącego przy każdym odwiedzeniu pliku (czyli ktoś wchodzi. Nie ma jeszcze zapisanego w sesji IP - zapisuj. Jest już zapisane - porównaj ze starym). Jeżeli IP się zmieni - exit();
3. Ustaw w pliku z formularzem logowania sesje $_SESSION['form'] = true; i sprawdzaj w panelu, czy $_SESSION['form'] == true; Jeżeli nie - exit();

Możliwości jest naprawdę wiele, tylko chwilę trzeba pomyśleć.
To, co pisałem teraz, to było z palca wymyślane, żebyście się nie czepiali szczegółów winksmiley.jpg
wolfen3
Dzięki ! To się nazywa konkretna odpowiedz bez dyrdymałów smile.gif Jeszcze raz dziękuje i pozdrawiam.
Wolfie
wolfen, jak Dumdas pomogl to wcisnij mu pomogl aaevil.gif tak na marginesie winksmiley.jpg
L0rd
Ten kod idzie bardzo szybko obejść, ktoś napisał, że wystarczy wejść w plik costam.php lecz, jeżeli nie znamy nazwy tego pliku co zrobić? Odpowiedź jest bardzo prosta w hasło wpisujemy:

  1. 1!=1 || $haslo


dzięki czemu warunek przybiera następującą formę:

  1. #
  2. function checkPass()
  3. #
  4. {
  5. #
  6. $haslo = $_POST["haslo"];
  7. #
  8. if(1!=1 || $haslo <> "MOJE SUPER TAJNE HASLO"){
  9. #
  10. return false;
  11. #
  12. }
  13. #
  14. else{
  15. #
  16. return true;
  17. #
  18. }
  19. #
  20. }


polecam htmlspecialchars
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.