Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP+SQL]Usuwanie wiadomosci+bezpieczenstwo, Jak to zrobic bez sesji i bez panelu admina?
marcio
post 22.12.2007, 18:35:57
Post #1





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Witam zrobilem sobie usuwanie wiadomosci w ksiedze gosci(nawet robi rym biggrin.gif) lecz jest ono slabo zabezpieczone tzn,link do usuwania danej wiadomosci widza tylko osoby ktore maja takie same ip jak dany post i jak dodta wszystko dziala.
problem polega na tym ze znajac id posta mozna usunac co sie chce wpisujac go w url(usuwanie przesylam GET'em) tak to wyglada.
  1. <?php
  2. switch ($_GET['action']) {
  3.  
  4. case 'usun':
  5. if($db = mysql_connect($this->pasy['host'], $this->pasy['login'], $this->pasy['haslo'])) { 
  6.  mysql_select_db($this->pasy['baza']);
  7. $ask = ("delete from ksiega_gosci where id=".(int)$_GET['id']);
  8.  mysql_query($ask, $db);
  9.  
  10. break;
  11.  }
  12. }
  13. ?>

a tu pokazaywanie postow z linkiem do usuwania lub bez:
  1. <?php
  2. if($tab['ip'] == $_SERVER['REMOTE_ADDR']) {
  3.  
  4. echo('<table border="1" width="55%" bgcolor="#4E4E68" align="center"><tr><td width="50%">Dodal: '.stripslashes($tab['nick']).'</td><td width="50%">Dnia:'.$tab['data'].'</td></tr>
  5. <tr><td>'.stripslashes($tab['message']).'</td>
  6. <td><a href="?strona='.$strona.'&action=usun&id='.$tab['id'].'">usun</a></td>
  7. </tr>
  8. </table></form>');
  9. }
  10.  
  11. else {
  12. echo('<table border="1" width="55%" bgcolor="#4E4E68" align="center"><tr><td width="50%">Dodal: '.stripslashes($tab['nick']).'</td><td width="50%">Dnia:'.$tab['data'].'</td></tr>
  13. <tr><td>'.stripslashes($tab['message']).'</td></tr></table></form>');
  14.  }
  15. }
  16. ?>

i teraz nie wiem zabardzo jak to zabezpieczyc mysle nad cookie, lecz jeszcze nie wiem co i jak myslalem na takimi dwoma rozwiazaniami:
*Gdy user dodaje posta i dane sie zapisuja do bazy to te same dane zapisac w cookie(jesli jest taka mozliwosc) + do tego wersje przegladarki ze nawet jak ktos sobie zmieni zawartosc cookie zeby edytowac inne wiadomosci to nie bedzie wiedzial wersji przegladarki user'a.
*Zrobic funckje losujaca jakas cyfre np z przedzialu od 1 do 1000 i zahashowac to i dodac do karzdej odpowiedzi zapisac to tez w cookie i sprawdzac czy sie zgadzaja??

Ale nie wiem czy sie one sprawdza czekam na jakies propozycje


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
phpion
post 22.12.2007, 18:42:21
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Najlepiej zrób tak, że dodaj nowe pole do tabeli w bazie. Nazwij je np. "kod" i generuj tam jakiś ciąg znaków (np. md5(time().uniqid()) następnie do linków służących do usuwania dodawaj ten kod:
  1. <?php
  2. ...
  3. <td><a href="?strona='.$strona.'&action=usun&id='.$tab['id'].'&kod='.$tab['kod'].'">usun</a></td>
  4. ...
  5. ?>

Następnie w kodzie usuwającym wpis daj:
  1. <?php
  2. $ask = ("delete from ksiega_gosci where id=".(int)$_GET['id']." AND kod=".$_GET['kod']);
  3. ?>

I po sprawie. Znając tylko id można sobie polatać. Aby usunąć posta należy znać jego id oraz kod.
Go to the top of the page
+Quote Post
marcio
post 22.12.2007, 19:40:21
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Kurde nie pomyslalem o tym a to takie banalne mniej kombinowania niz z cookie jesli to zadziala to ci cos wysle pod choinke

Ok cos wykombinowalem ale ani wiadomosc sie nie usuwa ani nie widac kodu w url a kod w bazie sie dodaje.Tak to wyglada:
  1. <?php
  2. $this->hash = substr(md5(rand(1, 1000)), 0,6);
  3. ?>

switch tak:
  1. <?php
  2. switch ($_GET['action']) {
  3.  
  4. case 'usun':
  5. if($db = mysql_connect($this->pasy['host'], $this->pasy['login'], $this->pasy['haslo'])) { 
  6.  mysql_select_db($this->pasy['baza']);
  7. $ask = ("delete from ksiega_gosci where id=".(int)$_GET['id']." AND kod=".$_GET['kod']);
  8.  mysql_query($ask, $db);
  9.  
  10. break;
  11.  }
  12. }
  13. ?>

link tak(pokaze tez zapytanie i petle while):
  1. <?php
  2. $strona = $_GET['strona'];
  3. $id = (int)$_GET['id'];
  4.  $kod = $_GET['kod'];
  5. $zap = ("select * from ksiega_gosci order by id desc limit ".$strona*$liczba.",".$liczba);
  6.  $ris = mysql_query($zap, $db) or die(mysql_error());
  7.  
  8. while($tab = mysql_fetch_assoc($ris)) {
  9. if($tab['ip'] == $_SERVER['REMOTE_ADDR']) {
  10.  
  11. echo('<table border="1" width="55%" bgcolor="#4E4E68" align="center"><tr><td width="50%">Dodal: '.stripslashes($tab['nick']).'</td><td width="50%">Dnia:'.$tab['data'].'</td></tr>
  12. <tr><td>'.stripslashes($tab['message']).'</td>
  13. <td><a href="?strona='.$strona.'&action=usun&id='.$tab['id'].'&kod='.$_tab['kod'].'">usun</a></td>
  14. </tr>
  15. </table></form>');
  16. }
  17. ?>

kolumna gdzie znajduje sie kod nazywa sie kod


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 04:37