![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Witam. Jestem nowy na tym forum. Niedawno zacząłem uczyć sie php i im głębiej w to wchodze tym większe problemy napotykam:P
Zrobiłem prosty system artykułów i komentarzy do nich i panel do zarządznia tym systemem. Panel znajduje sie w oddzielnym folderze i składa sie z kilku plików .php. Chciałbym zabezpieczyć jakoś pliki w tym folderze albo najlepiej cały folder wraz z zawartością. Znalazłem już kilka rozwiązań np. coś takiego jak tu http://www.webdiary.pl/technologie+art.id+217.htm ale mój panel składa sie z kilku plików i zabezpieczanie każdego pliku z osobna oznaczało by, przy przejściu na podstrone, konieczność ponownego podania hasła:/ Oznacza to że trzeba tak zrobić panel aby wszystko zawierało się np. w stronie index.php? Czy może da rade jakoś zabezpieczyć cały folder z zawartością? Link do stronki: http://www.testyphpsql.yoyo.pl/index.php Link do panelu: http://www.testyphpsql.yoyo.pl/admin_panel/ |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%)
|
Na sam początek zacznij od logowania opartego na sesjach - session" title="Zobacz w manualu PHP" target="_manual. W każdym pliku sprawdzaj czy wartość sesji jest OK, jeśli tak to wyświetlaj plik, jeśli nie to zrób przekierowanie na stronę logowania.
Łukasz |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Ok, dzieki. Spróbuje wykombinować coś z tymi sesjami. A może da rade iść na łatwiznę i jakoś dać hasło na cały folder?(IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%)
|
Hasło na cały katalog to przy pomocy pliku .htaccess.
Zrób tak jak kolega kossa radzi - sesje, proste jak .... strzyżenie psa (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie należy jednak zapomnieć o bezpieczeństwu sessji |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Poczytałem troche już o sesjach i chodzi w tym mniej więcej o to że: pierwszą strone zabezpieczam hasłem i po poprawnym wpisaniu hasła otwieram sesje i tworze identyfikator, tak? A na pozostałych stronach sprawdzam czy sesja jest rozpoczęta i czy identyfikator jest prwidłowy, jeśli jest to można sie poruszac po stronach, a jeśli nie to daje linka do strony głównej z hasłem. A dla bezpieczeństwa ten identyfikator przekazuje sie w cookie (o którym też jeszcze nic nie wiem:P), czy o to w tym chodzi?
|
|
|
|
Post
#6
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%)
|
Tak.
Teraz musisz to ogarnąć w praktyce (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Czy takie coś powinno wystarczyć, aby przeciętnemu użytkownikowi nie udało sie nic namieszać w panelu administracjnym?
plik login.php
plik index.php i inne pliki panelu
plik logout.php
Nie używałem cookies bo jeszcze dokładnie nie wiem jak. |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%)
|
mam ten sam problem i sesje robie prawie tak samo jak ty ale gdy sie loguje to musze porownac login i haslo wpisane przez user'a z tym co jest w bazie??Bo mi sie zdaje ze tak jesli tak to jak mam je porownac o tak
Kod $zapytanie = ("select * from shout where login='".$user_login."' and haslo='".sha1($user_pass)."'"); $zrob = mysql_query($zapytanie, $db) or die ('Polaczenie nie powiodlo sie'); if(mysql_num_rows($zrob) > 0) { echo ('Zalogowano'); $_SESSION['user']=$user_login; } else { echo('Logowanie nie powiodlo sie'); } if($_SESSION['user']) { mysql_close($db); header("Location: user.php"); } else { mysql_close($db); header("Location:nieuser.php"); } to jak mam porownac dane z bazy tymi wpisanymi w formularzu? cos takiego if($user_login == $login && $user_pass == sha1($haslo)) { //tu reszta kodu?? } Ten post edytował marcio 28.09.2007, 20:53:52 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Hasło w bazie jest zakodowane? Jeśli tak to po wyciągnięciu go z bazy w zakodowanej postaci można chyba porównać w ten sposób
Nie wiem czy dobrze zrozumiałem o co biega, ale coś takiego mi sie nasunęło;) Ten post edytował krzysiek_raven 28.09.2007, 21:41:30 |
|
|
|
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%)
|
zrobilem identycznie tylko ze najpierw podalem zmienna z bazy a potem porownalem z ta z forma czyli zrobilem na odwrot ale chyba tez jest dobrze
Kod <?php if($zrob) {
while($dane = mysql_fetch_assoc($zrob)) { if($zrob['login'] == $user_login && $zrob['haslo'] == sha1($user_pass)) { echo ('Zalogowano'); $_SESSION['user'] = $user_login; $_SESSION['pass'] = $user_pass; } } } ?> Ten post edytował marcio 28.09.2007, 21:58:24 |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.11.2006 Ostrzeżenie: (0%)
|
<?php if($zrob) { while($dane = mysql_fetch_assoc($zrob)) { if($zrob['login'] == $user_login && $zrob['haslo'] == sha1($user_pass)) { echo ('Zalogowano'); $_SESSION['user'] = $user_login; $_SESSION['pass'] = $user_pass; } } } ?> coś pokręciłeś. jeżeli już to while($dane = mysql_fetch_assoc($zrob)) { if($dane['login'] == $user_login && $dane['haslo'] == sha1($user_pass)) { echo ('Zalogowano'); $_SESSION['user'] = $user_login; $_SESSION['pass'] = $user_pass; } I ja mam taką cichą nadzieję, że jak podajecie w zapytaniu SQL'a " WHER `login` = '$login_z_formularza' " to linijke wcześniej stoi $login_z_formularza = addslashes($login_z_formularza); Inaczej mozesz sobie pisac kod PHP, na sesjach z hashowanie w SHA1, a i tak SQL-injection da sie zrobić... |
|
|
|
Post
#12
|
|
|
Grupa: Zarejestrowani Postów: 86 Pomógł: 0 Dołączył: 28.09.2007 Ostrzeżenie: (0%)
|
Mam jeszcze jeden problem z tym zabezpieczeniem. Jak wpisuje adres http://www.testyphpsql.yoyo.pl/admin_panel/ to pokazuje mi że strona nie istnieje a do linku zostaje doczepione coś takiego
/login.phpPHPSESSID=f56dd27e5eca9821e0b44a485429380d. Główny plik w tym katalogu to index.php i gdy nie ma sesji to powinien przenieść do login.php i niby przenosi ale z tą końcówką w linku. O co chodzi? Czasami jest wszystko ok, a czasem sie to pojawia. Ten post edytował krzysiek_raven 29.09.2007, 09:34:54 |
|
|
|
Post
#13
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
Ale w porządku robi. Przenosi do login.php. Jako dodatkowy parametr dodaje identyfikator sesji, który jest tworzony nawet, gdy użytkownik nie jest zalogowany (sesja uruchamia się przy wywołaniu funkcji session_start).
PHPSESSID jest dodawany do adresu tylko wtedy, gdy przeglądarka ma wyłączone cookies (ang. ciasteczka) lub, gdy konfiguracja php.ini zawiera wyłączone zapisywanie sesji do cookie. |
|
|
|
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%)
|
Grabarz dzieki ale pisalem na szybko i bylo pozno wiec mi sie pokrecilo wielkie dzieki (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) a co do addslashes to one i tak nic nie pomoze jak ktos bedzie chcial zrobic sql injection to moze tylko uchrobnic przed sript kiddies ale ktos kto sie na tym zna to to objedzie do tego sie uzywa mysql_escape_real_string (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
|
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 12.11.2006 Ostrzeżenie: (0%)
|
Też prawda:]
Ale ja dodatkowo sprawdzam funkcją ctype_alpha() - czy podany ciąg jest wyłącznie aklfabetyczny. (ew. wyrażeniami regularnymi - czy są TYLKO cyfry i litery - bez spacji, i innych znaków w loginie) A co do problemu: Jak user nie jest zalogowany to go przenosi do login.php I przy okazji dokleja identyfikator SID: <?php session_start(); if (!isset($_SESSION["id"])){ header("Location: login.php" . SID); exit(); } else { echo ('strona główna<br><br>'); echo('<a href="logout.php">Wyloguj</a>'); } ?> Popraw ta linię na header("Location: login.php?" . SID); I już się nie będzie rypało. Jak wywołujesz plik *php, to parametr jest po "?" więc: login.php?PHPSID=686868cośtam. |
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%)
|
a jaka jest roznica jak ja zrobie bez SID??
|
|
|
|
| -Gość- |
Post
#17
|
|
Goście |
Utwórz w katalogu z panelem administracyjny plik authpack.php , z taką zawartością:
A potem w plikach panelu administracyjnego umieść taki kod:
|
|
|
|
Post
#18
|
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 13.10.2008 Ostrzeżenie: (0%)
|
Witam mam podobną rzecz do zrobienia i mam jedno pytanko odnosnie sesji:
Kod <?php session_start(); echo '<h1>DLA ZOLOGOWANYCH</h1>'; // sprawdzenie zmiennej sesji if(isset($_SESSION['prawid_uzyt'])) { echo '<p>Użytkownik zalogowany jako '.$_SESSION['prawid_uzyt'].'</p>'; echo '<p>tu wyswietla sie komunikat dla zarejestrowanych</p>'; } else { echo '<p>Użytkownik niezalogowany.</p>'; echo '<p>Tylko zalogowani użytkownicy mogą oglądać tę stronę.</p>'; } ?> znalzłem gdzies taki skrypt odnosnie sesji uwierzytelniania, logowania itp... ale mam takie bardzo glupie pytanie i pewnie bedziecie mieli niezały ubaw ale trudno (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . w którym miejscu tego skryptu umieścić poprostu strone?! zeby nie bylo napisu "tu wyswietla sie komunikat dla zarejestrowanych " tylko było widac strone od znacznika <html> do znacznika </html>. Prosze was o odpowiedz i nie smiejcie sie za bardzo (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
|
Post
#19
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%)
|
Przed znacznikiem <html> wstaw:
Pod tym wrzuć normalnie stronę. Każdego niezalogowanego przekieruje z automatu do pliku logowanie.php, gdzie możesz np. umieścić formularz logowania. |
|
|
|
Post
#20
|
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 13.10.2008 Ostrzeżenie: (0%)
|
Jeszcze jakby mi ktos wyjasnił o co chodzi z takim warningiem to był bym bardzo dźwieczny (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\sesje\tylko_czlonkowie.php:3) in C:\wamp\www\sesje\tylko_czlonkowie.php on line 3 |
|
|
|
![]() ![]() |
|
Aktualny czas: 9.06.2026 - 09:38 |