daGrevis Posted May 30, 2010 Report Share Posted May 30, 2010 Sveiki, Nedaudz uzlaboju drošību savam kodam... <input type="checkbox" name="rules" id="rules"> Vai nav tiesa, ka hakeris kaut vai ar to pašu FireBug var nomainīt "type" uz tekstu un tad submit'ot ko ļaunu? Škiet jā. Kādai vajadzētu izskatīties pārbaudei? (pret ko sliktu) Nu, piemēram, "username" man ir šādi... function is_username($username) { return preg_match('/^[a-zA-Z0-9-_]{5,25}$/', $username); // What about "."? } if(!is_username($username)) { $_SESSION['human_error'] = 'The submited username is not valid!'; redirect("{$root}/register.php"); } Quote Link to comment Share on other sites More sharing options...
briedis Posted May 30, 2010 Report Share Posted May 30, 2010 Jebkurus datus, ko tu saņem var noviltot. Ar php jebkurā gadījumā ir jāpārbauda saņemtie dati. Nevar ticēt nekam, kas nāk no lietotāja! Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 30, 2010 Author Report Share Posted May 30, 2010 Jā, to es jau esmu sapratis. =) Tikai, lietotājs var submitot jebkādus datus tagad. Tad es vienkārši ensaprotu kādu regex'u meklēt/taisīt?! =D Vai ne regex'u... Quote Link to comment Share on other sites More sharing options...
briedis Posted May 30, 2010 Report Share Posted May 30, 2010 Viss atkarīgs no tā, kāda tipa dati ir vajadzīgi, un kādam nolūkam. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 30, 2010 Author Report Share Posted May 30, 2010 Pārbaude, kura, ja ir atķeksēta,ļauj reģistrēties. Pārbaudām, vai lietotājs piekrīt, ka ir vecāks par 13 gadiem. if(!isSet($age)) { $_SESSION['human_error'] = 'You can\'t register if you are younger then 13!'; redirect("{$root}/register.php"); } Quote Link to comment Share on other sites More sharing options...
briedis Posted May 30, 2010 Report Share Posted May 30, 2010 jā, čekboksu var pārbaudīt ar isset($_POST['..']) Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 30, 2010 Author Report Share Posted May 30, 2010 A kā vajag?? O.o Quote Link to comment Share on other sites More sharing options...
briedis Posted May 30, 2010 Report Share Posted May 30, 2010 A kā vajag?? O.o Uzprasi gūglei, izlasi un pieraksti pirmos 100 atgrieztos rezultātus. Izanalizē tos, un dari, kā vairums to dara :) Quote Link to comment Share on other sites More sharing options...
Леший Posted May 31, 2010 Report Share Posted May 31, 2010 Vai nav tiesa, ka hakeris kaut vai ar to pašu FireBug var nomainīt "type" uz tekstu un tad submit'ot ko ļaunu? Škiet jā. Priekš kam tāds čakars, ja ne GET, ne POST neatšķir lauku tipus? Tiem ir tikai fieldname un value. Čekbox value vietā var kaut Karš un miers ķīniešu tulkojumā aizsūtīt. Quote Link to comment Share on other sites More sharing options...
emsy Posted May 31, 2010 Report Share Posted May 31, 2010 (edited) Čeckboksus un radio pogas ir jāpārbauda ar isset() <?php // 1) čekojam čeckboxu if(isset($_POST['checkbox'])) { // 2) čeckojam vai kāda no radio pogām ir iespiesta if(isset($_POST['radio'])) { // čeckojam kura radio poga ir piespiesta if($_POST['radio']==1) { // un reāli... } elseif($_POST['radio']==2) { // ...šitās radio pogu values... } elseif($_POST['radio']==3) { // ...pārbaudi ar PHP un nelaid klāt SQL, un viss būs oki ;) } } } ?> <form action='' method='post'> <input type='radio' name='radio' value='1' /> <input type='radio' name='radio' value='2' /> <input type='radio' name='radio' value='3' /> <input type='checkbox' name='checkbox' /> </form> Edited May 31, 2010 by emsy Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 31, 2010 Author Report Share Posted May 31, 2010 Tieši tā, man ar isSet() jau bija... Bet tikko man aizgāja. Kāpēc man viņas filtrēt, ja man vajag tikai uzzināt, vai ir atķeksētas... =/ Nav taču dotie dati jāsaglabā datubāzē vai jāparāda lietotājam. =) P.S. Ņemšu vērā briedis padomu un sākšu domāt. =D Quote Link to comment Share on other sites More sharing options...
aldis Posted May 31, 2010 Report Share Posted May 31, 2010 Inputiem, tekstiem - samet drošības pret injekcijām, kautvai pret javascript izpildi.. u.t.t.. :) Bilžu augšuplāde, lai neielāde tuftu - izlaid caur GD2 visu... :) Quote Link to comment Share on other sites More sharing options...
briedis Posted May 31, 2010 Report Share Posted May 31, 2010 (edited) Ja tev ir radio buttons, tad gan būs jāčeko vērtība... bet to var darīt šādi: switch($_POST['radio_poga']){ case 'vertiba1' : //do stuff break; case 'vertiba2' : //do stuff break; case 'vertiba3' : //do stuff break; default : //Defaultais stuffs (ja kāds h4x0rs mēģina ļevās vērtības iesūtīt) } Edited May 31, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Леший Posted May 31, 2010 Report Share Posted May 31, 2010 briedis, switch..case neatšķir tipus, līdz ar to, viņam 0 būs vienāds ar 'asdf'. Labāk: switch (true){ case (a === b) } Par tēmu: labakais variants ir veidot sarakstu ar visiem iespējamiem variable nosaukumiem, katrai grupai piesaistīt validāciju. Quote Link to comment Share on other sites More sharing options...
php newbie Posted May 31, 2010 Report Share Posted May 31, 2010 vai POST dati nav vienmēr string? 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.