[php]Bezpieczeństwo logowania

0

Witam, mam kilka pytań odnośnie bezpieczeństwa logowania.

  1. Czy jeśli po wpisaniu błędnych danych do skryptu logowania, będę przenosił usera na stronę logowania z użyciem header() to on nie ma możliwości obejrzenia tej strony zobezpieczonej?

  2. Zabezpieczam skrypt logowania następującymi metodami:
    *mysql_real_escape string(),
    *5 prób logowania na godzinę,
    *filtrowanie logina i hasła wyrażeniami regularnymi
    *htmlspecialchars(), strip_tags(), addslashes().

Czy jest jakaś możliwość włamania się do serwisu nie znając loginu i hasła?

3.Po co programiści wpisują slashe przed cudzysłowiami w formularzach? Np.

<form action="\&quot;index.php\&quot;" method="\&quot;POST\&quot;">
0

1.tak, jesli po header dasz exit() lub die()
2. Tak
3. Oo, byc moze daja przed cudzyslmwami slashe, by osadzic kod w zmienej w php:

$zmiena = "<form action=\"index.php\" method=\"POST\">";
0
kaziuVBC napisał(a)

Witam, mam kilka pytań odnośnie bezpieczeństwa logowania.

  1. Czy jeśli po wpisaniu błędnych danych do skryptu logowania, będę przenosił usera na stronę logowania z użyciem header() to on nie ma możliwości obejrzenia tej strony zobezpieczonej?

  2. Zabezpieczam skrypt logowania następującymi metodami:
    *mysql_real_escape string(),
    *5 prób logowania na godzinę,
    *filtrowanie logina i hasła wyrażeniami regularnymi
    *htmlspecialchars(), strip_tags(), addslashes().

Czy jest jakaś możliwość włamania się do serwisu nie znając loginu i hasła?

3.Po co programiści wpisują slashe przed cudzysłowiami w formularzach? Np.

  <form action=\"index.php\" method=\"POST\">
  

Jeśli po header() dasz exit(), to nic się nie wykona po przekierowaniu go gdzie indziej.

//...
if ($abc == FALSE) {
   header('Location: zle_haslo.php');
}

echo('TAJNE DANEEEE');

To jest potencjalnie niebezpieczne.

//...
if ($abc == FALSE) {
   header('Location: zle_haslo.php');
   exit();
}

echo('TAJNE DANEEEE');

To już nie.

Ogólnie jeśli filtrujesz login i hasło REGEXPem, to to wystarczy. Nie ma sensu tracić czasu wykonywania na dodatkowe addslashes(), striptags() itp... Chociaż mysql_real_escape_string() można używać wszędzie, dla zapewnienia spokoju na duszy ;]

bordeux napisał(a)
  1. Oo, byc moze daja przed cudzyslmwami slashe, by osadzic kod w zmienej w php:
$zmiena = "<form action=\"index.php\" method=\"POST\">";

Aczkolwiek ten sposób jest badziewny, lepiej po prostu użyć:

$zmienna = '<form action="index.php" method="POST">';

Albo:

$zmienna = <<<HTML
<form action="index.php" method="POST">
HTML;
0

Odnosząc się do tego co napisał <B>@bordeux</b> o 2 pt. chciałbym się dowiedzieć jakie są możliwości włamania do serwisu przy tych zabezpieczeniach?

0

co do 2 pkt jak dane przelewasz przez mysql_real_escape string jestes bezpieczny. Jesli bys tego nie zrobil, to atakujacy wykorzystuje technike sql injection

co do 1pkt. naglowek location kaze przegladarce przeniesc sie na wskazana strone. Mozesz zablokowac automatyczne przekierowanie, dzieki czemu bedziesz mial dostep do danych po header()

0
bordeux napisał(a)

c
co do 1pkt. naglowek location kaze przegladarce przeniesc sie na wskazana strone. Mozesz zablokowac automatyczne przekierowanie, dzieki czemu bedziesz mial dostep do danych po header()

Przecież jeśli dam coś takiego:

header('Location: logowanie.php');
exit;

To nawet jeśli nie przekieruję się na stronę logowanie.php to wykonywanie skryptu powinno się zatrzymać, prawda?

0
kaziuVBC napisał(a)
bordeux napisał(a)

c
co do 1pkt. naglowek location kaze przegladarce przeniesc sie na wskazana strone. Mozesz zablokowac automatyczne przekierowanie, dzieki czemu bedziesz mial dostep do danych po header()

Przecież jeśli dam coś takiego:

header('Location: logowanie.php');
exit;

To nawet jeśli nie przekieruję się na stronę logowanie.php to wykonywanie skryptu powinno się zatrzymać, prawda?

No i się zatrzyma, po nagłówku nic nie zostanie wysłane do klienta ani wykonane.

0
Demonical Monk napisał(a)

No i się zatrzyma, po nagłówku nic nie zostanie wysłane do klienta ani wykonane.

Bardzo mnie to cieszy, nie wiem dlaczego @bordeux twierdzi inaczej że można zobaczyć resztę.

Więc pytam jeszcze raz, czy jest jakaś możliwość na włam do serwisu?

0

Zabezpieczając się przez mysql_real_escape_string(), ewentualnie filtrując dane REGEXPem nic ci nie zrobią.
No i używając exitów po header.

0

No to mnie uspokoiliście ;-) Dzięki Panowie za pomoc. Pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1