labaiss Posted September 18, 2010 Report Share Posted September 18, 2010 (edited) Labdien, Lūdzu, paskaidrojiet, kā uztaisīt drošu dzēšanu šādā gadījumā! <?php $lietotaja_id=$_SESSION['user_id']; // iegustam ID $faila_adrese = $_GET['adrese']; // sanemam faila linku $faila_del_nosaukums = $_GET['nosaukums']; // sanemam faila nosaukumu $faila_url = "/$faila_adrese/$faila_del_nosaukums"; // sastaadam URL prieksh faila dzeshanas if (file_exists($faila_url)) { // Fails eksistee!!! un ir atrodams!! if (@unlink($faila_url) === true) { // fails ir izdzests $delete_msg = "Fails veiksmīgi dzēsts!"; // paziņojums lietotaajam } else { $delete_msg = "Problēma ar faila dzēšanu!"; } } else { // fails nav atrasts!! echo "Problēma ar Faila atrašanu! Sazinieties ar mums!"; } ?> Un informācija tiek padota ar urlencode palīdzību! Līdz ar to vienkārši iegūstot linku, pamainot url adresi ko dzēst - var izdzēst visu ko vēlās. Ko darīt savādāk un kā? Vēl variants man bija, ka kaut kur starpā starp visu url, ieliek mapi, kura ir vienāda ar $lietotaja_id, bet tas arī neder, jo ja iegūst lietotaja ID, tad atkal visu var dzēst cik grib. Ko darīt? Un ko iesakāt? Savādāk sanāk ka šis skripts ir nāve visam portālam. Paldies. 19.09.2010. 12:17 domāju domāju un varbūt izdomāju: Ko Jūs sakiet par šādu variantu: Kad fails tiek augšupielādēts viņam tiek ģenerēts KODS un saglabāts DB pie attiecīgā faila nosaukuma un pārējā. Lietotājs atverot lapu, kur viņš var dzēst failus (respektīvi tabula ar faila nosaukumiem un linkiem), un urlencodā ierakstās arī šis KODS. Spiežot "dzēst" - faila nosaukums (priekš unlink), KODS (pie faila augšupielādes ģenerētais) tiek padoti php scriptam, kur no "session" tiek paņemts lietotāja ID. Tad pēc lietotāja ID un KODA tiek dzēsts no datu bāzes šāds ieraksts, ja dzēšana ir notikusi - nostrādā arī unlink, kas izdzēš to no mapes. Ja šāda ieraksta nav datu bāzē nekas netiek dzēsts! Manuprāt, droši! Jo vienīgie veidi kā iegūt šo kodu, kas tiek ģenerēts pie augšupielādes ir: 1. piekļūt DB 2. Iekļūt lāpā (dzēšanas lapā) kā autorizētam lietotājam! Un no šiem faktoriem izvairīties ir ļoti grūti vai vei neiespējami! Sakiet, lūdzu, ja kaut kur kļūdos! Edited September 19, 2010 by labaiss Quote Link to comment Share on other sites More sharing options...
daGrevis Posted September 18, 2010 Report Share Posted September 18, 2010 Pirmkārt, vajadzētu CHMOD mapei, kurā atrodas "dinamiskie" faili. =) Quote Link to comment Share on other sites More sharing options...
labaiss Posted September 18, 2010 Author Report Share Posted September 18, 2010 Pirmkārt, vajadzētu CHMOD mapei, kurā atrodas "dinamiskie" faili. =) 755 Quote Link to comment Share on other sites More sharing options...
Kavacky Posted September 18, 2010 Report Share Posted September 18, 2010 Informāciju par failiem pieglabājam datubāzē un padodam datubāzes ieraksta id, izkaplējam, vai to failu vispār tas lietotājs drīkst bakstīt, dzēšam datubāzē ierakstīto faila nosaukumu. Quote Link to comment Share on other sites More sharing options...
labaiss Posted September 19, 2010 Author Report Share Posted September 19, 2010 Informāciju par failiem pieglabājam datubāzē un padodam datubāzes ieraksta id, izkaplējam, vai to failu vispār tas lietotājs drīkst bakstīt, dzēšam datubāzē ierakstīto faila nosaukumu. Doma nav slikta, tagad saprotu kur ķerties klāt un kā. Paldies! Quote Link to comment Share on other sites More sharing options...
Vhubuo Posted September 20, 2010 Report Share Posted September 20, 2010 Doma nav slikta, tagad saprotu kur ķerties klāt un kā. Paldies! Nekad neuzticaties tam ko jus sut lietotaji. Jo ieraksts "/$dir/$file" var kļūt par "//" Un tas dazas sistemas ir identisks / Un datubaze nevisos gadijumos jūs izglabs. Quote Link to comment Share on other sites More sharing options...
Kavacky Posted September 22, 2010 Report Share Posted September 22, 2010 Nevar kļūt, ja pārbauda. Quote Link to comment Share on other sites More sharing options...
Vhubuo Posted September 23, 2010 Report Share Posted September 23, 2010 Manuprat, augstak nav mineta neviena parbaude kura var noverst šadu problemu. Quote Link to comment Share on other sites More sharing options...
Vhubuo Posted September 23, 2010 Report Share Posted September 23, 2010 Ko Jūs sakiet par šādu variantu: Kad fails tiek augšupielādēts viņam tiek ģenerēts KODS un saglabāts DB pie attiecīgā faila nosaukuma un pārējā. Lietotājs atverot lapu, kur viņš var dzēst failus (respektīvi tabula ar faila nosaukumiem un linkiem), un urlencodā ierakstās arī šis KODS. Spiežot "dzēst" - faila nosaukums (priekš unlink), KODS (pie faila augšupielādes ģenerētais) tiek padoti php scriptam, kur no "session" tiek paņemts lietotāja ID. Tad pēc lietotāja ID un KODA tiek dzēsts no datu bāzes šāds ieraksts, ja dzēšana ir notikusi - nostrādā arī unlink, kas izdzēš to no mapes. Ja šāda ieraksta nav datu bāzē nekas netiek dzēsts! Manuprāt, droši! Jo vienīgie veidi kā iegūt šo kodu, kas tiek ģenerēts pie augšupielādes ir: 1. piekļūt DB 2. Iekļūt lāpā (dzēšanas lapā) kā autorizētam lietotājam! Un no šiem faktoriem izvairīties ir ļoti grūti vai vei neiespējami! Sakiet, lūdzu, ja kaut kur kļūdos! Labi, bet nedrikst padot faila nosaukumu. To ir jaņiem no datubazes, jo var izdzest citu failu. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.