Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] czy to bezpieczne odrazu podać w $_SESSION['user'], nazwę użytkownika zamiast wartości zmiennej?
hiszpanespaniol
post
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


zalogować może się tylko jeden użytkownik i tylko z jednym hasłem. bez możliwości zmiany tych parametrów (ja je ustawiam raz na zawsze). Nie chcę więc tworzyć osobnego pliku z tymi parametrami (szyfrowanymi lub nie).

Pytanie brzmi, czy bezpiecznie jest zrobić taki skrypt?

  1. <?php
  2. if (isset($_SESSION['kim_jestem']) && $_SESSION['kim_jestem'] == jasio) {
  3. echo "
  4.  zalogowany jako " .$_SESSION['kim_jestem']. "<br> <a href=\"wyloguj.php\">wyloguj</a>
  5. ";
  6. }
  7. else
  8. {
  9. header("Location:logowanie.php");
  10. }
  11. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
hiszpanespaniol
post
Post #2





Grupa: Zarejestrowani
Postów: 213
Pomógł: 39
Dołączył: 7.04.2008
Skąd: 3city

Ostrzeżenie: (0%)
-----


to ja może podam całość jaką teraz mam, żeby nie było wątpliwości czemu sprawdzam tylko jedną wartość:

to jest formularz logowania HTML (plik index.php):

  1. <?php
  2. if (isset($_SESSION['kim_jestem']) && md5($_SESSION['kim_jestem']) == '4ea19358f71379f9bd8fe8e1708812fc')
  3. {
  4. echo "<b>Witaj człowieku: </b><br>\n<a href=\"logout.php\">Wyloguj się</a><br>\n<a href=\"zalogowany.php\">Twoja strona</a>";
  5. }
  6. else{
  7. echo "
  8. <form method=\"POST\" action=\"sprawdz.php\">
  9. <table>
  10. <tr><th align=\"right\">Login:</th><td align=\"left\"><input type=\"text\" name=\"login\"></td></tr>
  11. <tr><th align=\"right\">Hasło:</th><td align=\"left\"><input type=\"password\" name=\"haslo\"></td></tr>
  12. <tr><td align=\"center\" colspan=\"2\"><input type=\"submit\" value=\"loguj\" name=\"logowanie\"></td></tr>
  13. </table>
  14. </form>
  15. ";
  16. }
  17. ?>


Taki skrypt sprawdza formularz logowania (jest to plik sprawdz.php)

  1. <?php
  2. if($_POST['logowanie']){
  3. $pobrany_login = htmlspecialchars($_POST['login']);
  4. $pobrane_haslo = htmlspecialchars($_POST['haslo']);
  5. if($pobrany_login == 'jasio' && md5($pobrane_haslo) == '4ea19358f71379f9bd8fe8e1708812fc'){
  6. $_SESSION['kim_jestem'] = md5($pobrane_haslo);
  7. header("Location:zalogowany.php");
  8. }
  9. else{
  10. header("Location:index.php");
  11. }
  12. }
  13. else{
  14. header("Location:index.php");
  15. }
  16. ?>


a tak wygląda dowolna strona dostępna tylko po zalogowaniu (startowa to zalogowany.php):

  1. <?php
  2. if (isset($_SESSION['kim_jestem']) && md5($_SESSION['kim_jestem']) == '4ea19358f71379f9bd8fe8e1708812fc') {
  3. echo "
  4. jesteś zalogowany. Tutaj możesz sobie zmieniać swoje wpisy<br> <a href=\"logout.php\">wyloguj</a>
  5. ";
  6. }
  7. else
  8. {
  9. header("Location:index.php");
  10. }
  11. ?>


ostatni plik który wyloguje użytkownika (logout.php):

  1. <?php
  2. if (isset($_SESSION['kim_jestem']))
  3. {
  4. echo "zostałeś wylogowany<br>";
  5. echo "<a href=\"index.php\">Strona Główna</a>";
  6. }
  7. else{
  8. header("Location:index.php");
  9. }
  10. ?>


"a co z hasłem?"
jak widać w pliku zalogowany.php sprawdzam tylko jedną wartośc. a to dlatego, że jest ona tworzona w pliku sprawdz.php jedynie kiedy zgadza się i login i hasło (narazie są jednakowe).
co do tego, że niepotrzenie sprawdzam, czy $_SESSION['kim_jestem'] w ogóle jest zdefiniowana, to czytałem gdzies, ze PHP inaczej zareaguje w przypadku jedynie sprawdzania wartości, a inaczej w przypadku sprawdzania i istnienia i wartości. Nie pamiętam tego, ale coś mi się kojarzy z jakimś E_NOTICE.

teraz już widac całość tej strony mojej. Nigdzie niema hasła odkrytego.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.10.2025 - 00:52