Z powodu wysokiej aktywności botów, możliwość postowania przez gości została zablokowana do odwołania. Informacje i dyskusja
![]() ![]() |
28.09.2007, 10:41:08
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 83 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/ |
|
|
|
28.09.2007, 11:01:58
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 161 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 -------------------- |
|
|
|
28.09.2007, 11:09:43
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 83 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?
|
|
|
|
28.09.2007, 11:19:30
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 477 Pomógł: 10 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 Nie należy jednak zapomnieć o bezpieczeństwu sessji -------------------- |
|
|
|
28.09.2007, 12:20:55
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 83 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?
|
|
|
|
28.09.2007, 12:29:29
Post
#6
|
|
|
Grupa: Przyjaciele php.pl Postów: 7 422 Pomógł: 280 Dołączył: 31.03.2004 Ostrzeżenie: (20%)
|
Tak.
Teraz musisz to ogarnąć w praktyce |
|
|
|
28.09.2007, 17:55:37
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 83 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. |
|
|
|
28.09.2007, 20:51:21
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 1 947 Pomógł: 137 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (20%)
|
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 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON 2.6 | KOHANA 2.*
Zaplecze: Netbeans 6.8 | Notepad++ | VS 2008 | FF 3.6.* Sprzet: Netbook Acer Aspire one 150bb | Hp dv600 spalona plyta glowna :-) |
|
|
|
28.09.2007, 21:36:05
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 83 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 |
|
|
|
28.09.2007, 21:57:05
Post
#10
|
|
|
Grupa: Zarejestrowani Postów: 1 947 Pomógł: 137 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (20%)
|
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 -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON 2.6 | KOHANA 2.*
Zaplecze: Netbeans 6.8 | Notepad++ | VS 2008 | FF 3.6.* Sprzet: Netbook Acer Aspire one 150bb | Hp dv600 spalona plyta glowna :-) |
|
|
|
28.09.2007, 23:32:10
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ć... -------------------- Zapraszam na www.SNAZ.pl - Strony i skrypty na zamówienie oraz porady dla WebMasterów.
|
|
|
|
29.09.2007, 09:32:40
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 83 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 |
|
|
|
29.09.2007, 09:42:31
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 1 779 Pomógł: 38 Dołączył: 30.10.2003 Skąd: Wrocław |
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. -------------------- |
|
|
|
29.09.2007, 10:45:47
Post
#14
|
|
|
Grupa: Zarejestrowani Postów: 1 947 Pomógł: 137 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (20%)
|
Grabarz dzieki ale pisalem na szybko i bylo pozno wiec mi sie pokrecilo wielkie dzieki
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON 2.6 | KOHANA 2.*
Zaplecze: Netbeans 6.8 | Notepad++ | VS 2008 | FF 3.6.* Sprzet: Netbook Acer Aspire one 150bb | Hp dv600 spalona plyta glowna :-) |
|
|
|
29.09.2007, 12:58:41
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. -------------------- Zapraszam na www.SNAZ.pl - Strony i skrypty na zamówienie oraz porady dla WebMasterów.
|
|
|
|
29.09.2007, 14:05:54
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 1 947 Pomógł: 137 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (20%)
|
a jaka jest roznica jak ja zrobie bez SID??
-------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON 2.6 | KOHANA 2.*
Zaplecze: Netbeans 6.8 | Notepad++ | VS 2008 | FF 3.6.* Sprzet: Netbook Acer Aspire one 150bb | Hp dv600 spalona plyta glowna :-) |
|
|
|
| -Gość- |
29.09.2007, 17:15:26
Post
#17
|
|
Goście Pomógł: |
Utwórz w katalogu z panelem administracyjny plik authpack.php , z taką zawartością:
A potem w plikach panelu administracyjnego umieść taki kod:
|
|
|
|
24.10.2008, 09:31:25
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 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 |
|
|
|
24.10.2008, 09:35:24
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 1 779 Pomógł: 38 Dołączył: 30.10.2003 Skąd: Wrocław |
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. -------------------- |
|
|
|
24.10.2008, 09:53:39
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
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 |
|
|
|
![]() ![]() |
|
Wersja Lo-Fi | Aktualny czas: 31.07.2010 - 02:37 |