Devils666 Posted January 13, 2010 Report Share Posted January 13, 2010 sveiki, man tāds jautājums, vai gadījumā kāds nezin kādu majaslapu aizsardzības sistēmu, piem pret mysql injekcijam, utml... pats vienu labu aradu, taču ta vairak domata neta botiem un pamatīgi noslogo lapu, veras vaļa 5x ilgak... Quote Link to comment Share on other sites More sharing options...
Kaklz Posted January 13, 2010 Report Share Posted January 13, 2010 Neesmu gan lietojis, taču pēc nosaukuma šis varētu būt kaut kas uz to pusi, ko tu meklē: http://php-ids.org/ Quote Link to comment Share on other sites More sharing options...
Java Posted January 13, 2010 Report Share Posted January 13, 2010 Vislabāk aizsardzības programmēšana ir pragmatiska un kvalitatīva programmēšana, izmantojot labus struktūras veidošanas paraugus (design patterns), tad pie aizsardzības lietām būs minimāli jaiespringst... Quote Link to comment Share on other sites More sharing options...
Devils666 Posted January 13, 2010 Author Report Share Posted January 13, 2010 (edited) nu ja, bet kamer vel macos visu so man lapai vaig kadu papildus drosibu... varbut vel kads zin kadu aizsardzibas sistemu? Edited January 13, 2010 by Devils666 Quote Link to comment Share on other sites More sharing options...
2easy Posted January 13, 2010 Report Share Posted January 13, 2010 "aizsardzības sistēmas" izklausās pārspīlēti kruta. kkādu sistēmu ir vērts lietot tikai lapas auditam, lai ar automatizētu testu palīdzību mēģinātu atrast vietas, kur nav ievērota elementāra datu apstrāde/pārbaudes fabula ir ļoti vnkārša: nevajag uzticēties user inputam servera puses "drošībai" (pret sql injekcijām) lieto function qn($n) {return is_null($n) ? 'NULL' : (float) $n;} // sagatavo skaitli for mysql query function qs($s) {return is_null($s) ? 'NULL' : "'" . mysql_real_escape_string($s) . "'";} // sagatavo stringu for mysql query klienta puses "drošībai" (pret "html/css/js injekcijām" jeb xss) lieto htmlspecialchars() vārdu "drošībai" lieku pēdiņās, jo šīs lietas ir jāievēro arī pareizai datu apstrādei pat tad, kad drošību neviens neapdraud. piemēram 1) lai tabulā insertotu tekstu ar ', to vajag izlaist caur mysql_real_escape_string(), savādāk tas ' izraisīs mysql error, jo būs priekšlaicīgi aizvērts strings 2) lai lapā ziņas/jaunumu komentāros parādītu <, to vajag eskeipot ar htmlspecialchars(), savādāk tas nebūtu redzams, ja tam blakus būtu vēl kāds teksts, piemēram, <asdf kr4 tas, ka šī datu apstrāde ir saistīta arī ar drošību, tas ir tikai sekundāri Quote Link to comment Share on other sites More sharing options...
briedis Posted January 13, 2010 Report Share Posted January 13, 2010 (edited) Var vēl provēt izmantot ModSecurity :) Uz viena servera kur hostēju lapu bija traki pierast - piem, šis uzreiz met Internal Error, ja vairāk par 50 ierakstiem vienā lapā parādās no DB :) Tjipa, laikam domā ka mēģina uztaisīt sql dumpu. Ir vēl visādi patterni, pēc kā viņš čeko un noraida pieprasījumus... http://www.modsecurity.org/ Ja kods būs caurumains, nedomāju, ka tas spēs sniegt 100% drošību :) Edited January 13, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Devils666 Posted January 13, 2010 Author Report Share Posted January 13, 2010 nu ja, kad tiksu pie datora, tad apskatisos precizak un nu man bija tads - zb block... vins jau pirms lapas ielades skatijas vai netiek veiktas, piemeram, sql injekcijas Quote Link to comment Share on other sites More sharing options...
endrju Posted January 13, 2010 Report Share Posted January 13, 2010 (edited) fabula ir ļoti vnkārša: nevajag uzticēties user inputam Gandrīz precīzi. Precīzāk būtu - jebkādam inputam. Citešu no grāmatas "Beautiful Security" (2009): When we asked the senior Microsoft representatives at dinner why they did not send malicious data or provide malformed files as input to their product's testing, the answer was, "Why would a user want to do that" Their faces bore looks of shock and dismay that anyone would intentionally interact with a piece of software in such a way as to intentionally try to make it fail. Tas attiecas uz citāda veida inputiem, piemēram, xml+rpc; include() caur parametru vai htaccess, u.c. veidiem, kur tiek saņemts jebkāds inputs, ko useris var manipulēt - ne vienmēr tikai paredzētajā (GUI formas) veidā. servera puses "drošībai" (pret sql injekcijām) lieto function qn($n) {return is_null($n) ? 'NULL' : (float) $n;} // sagatavo skaitli for mysql query function qs($s) {return is_null($s) ? 'NULL' : "'" . mysql_real_escape_string($s) . "'";} // sagatavo stringu for mysql query Kāpēc float izpelnījies savu funkciju, bet integeri ne? Ok, jautāšu uzreiz - kāpēc integerus escape-o nevis typecast-o? Edited January 13, 2010 by endrju Quote Link to comment Share on other sites More sharing options...
2easy Posted January 13, 2010 Report Share Posted January 13, 2010 (edited) nav runa par int/float pielietojums ir vispārīgāks: skaitlis & teksts qn() saņem vērtību, kurai ir jābūt skaitlim (EDIT: ar skaitli šeit domāju gan int, gan float). ja padotā vertība nav skaitlis, tad pēc tam toč būs (EDIT: lietoju plašāko (float) castu, jo (int) kasts pakāstu decimāldaļas, bet šī funkcija ir domāta jebkuram skaitlim) qs() saņem stringu, un eskeipo to, ko vajag eskeipot Edited January 13, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
endrju Posted January 13, 2010 Report Share Posted January 13, 2010 nav runa par int/float pielietojums ir vispārīgāks: skaitlis & teksts qn() saņem vērtību, kurai ir jābūt skaitlim. ja padotā vertība nav skaitlis, tad pēc tam toč būs qs() saņem stringu, un eskeipo to, ko vajag eskeipot varēji vienkārši atbildēt, ka arī integer gadījumā Tu lieto qn(), t.i., (float) typecast. p.s. skaidrot ko funkcijas dara gan bija redundant overhead. Quote Link to comment Share on other sites More sharing options...
2easy Posted January 13, 2010 Report Share Posted January 13, 2010 tas tev ir viss skaidrs, bet te ir dafiga tautas, kuri vienus un tos pašus jautājumus pēc laika uzdod atkal. pieņem, ka tas overhead bija priekš viņiem ;) kādam vieglāk uztvert garus aprakstus ar atšķaidītu info, citam pietiek ar īsi un kodolīgi... Quote Link to comment Share on other sites More sharing options...
2easy Posted January 13, 2010 Report Share Posted January 13, 2010 Gandrīz precīzi. Precīzāk būtu - jebkādam inputam. vispārīgāk runājot, es inputu iedalu 2x veidos 1) iekšējais - developer ierakstītās vērtības/konstantes, ko padod/izmanto funkcijās. kā arī tās vērtības, kas kkad ir ienākušas no ārpuses un pēc pārbaudes/apstrādes tgd ir drošas 2) ārējais - viss kas ir ienācis no ārpuses un vēl nav pārbaudīts (kad es teicu "user input", es domāju tieši par šo) jebkādam inputam neuzticēties būtu stulbi, jo ja pats neuzticies sev un vienai savai funkcijai liec vēlreiz pārbaudīt vērtības, ko padod cita tava funkcija, kas jau tās ir pārbaudījusi, tad tā ir kkāda pesimistiska paranoja. parasti plānojot applikācijas arhitektūru, drošības pārbaudēm ir savs līmenis, kurā tiek veiktas visas ar drošību saistītās darbības. bet citi līmeņi tālāk jau saņem drošus datus un var specializēties uz savu darbu tikai nesaki atkal, ka tas ir overheads. noteikti atradīsies kāds, kas par to nebūs aizdomājies :D btw, tas labi, ka lasi grāmatas ;) Quote Link to comment Share on other sites More sharing options...
endrju Posted January 13, 2010 Report Share Posted January 13, 2010 (edited) vispārīgāk runājot, es inputu iedalu 2x veidos 1) iekšējais - developer ierakstītās vērtības/konstantes, ko padod/izmanto funkcijās. kā arī tās vērtības, kas kkad ir ienākušas no ārpuses un pēc pārbaudes/apstrādes tgd ir drošas 2) ārējais - viss kas ir ienācis no ārpuses un vēl nav pārbaudīts (kad es teicu "user input", es domāju tieši par šo) jebkādam inputam neuzticēties būtu stulbi, jo ja pats neuzticies sev un vienai savai funkcijai liec vēlreiz pārbaudīt vērtības, ko padod cita tava funkcija, kas jau tās ir pārbaudījusi, tad tā ir kkāda pesimistiska paranoja. parasti plānojot applikācijas arhitektūru, drošības pārbaudēm ir savs līmenis, kurā tiek veiktas visas ar drošību saistītās darbības. bet citi līmeņi tālāk jau saņem drošus datus un var specializēties uz savu darbu tikai nesaki atkal, ka tas ir overheads. noteikti atradīsies kāds, kas par to nebūs aizdomājies :D nē, nu viss ok. skaidrs, ka tā nav diskusija tikai divatā. lasa arī citi. gan jau kādam noderēs. btw, tas labi, ka lasi grāmatas ;) khh, vai tad tik nožēlojamā stāvoklī 21. gs. esam, ka par to kinda of "jāuzslavē"? citēju ne jau tāpēc, lai parādītu, ka kaut ko lasu, bet adekvāti iederējās. pats vai tad neko nelasi? Edited January 13, 2010 by endrju Quote Link to comment Share on other sites More sharing options...
2easy Posted January 13, 2010 Report Share Posted January 13, 2010 (edited) plauktā jau viskas mētājās, bet kkā nesanāk palasīt. googlē visu var ātrāk atrast :D vsp pie sevis esmu pamanījis tādu prikolu, ka lasot drukātos medijus, bieži gribas uzspiest ctrl+f, bet nevar :D:D:D laikam tā jau ir kkāda diagnoze... Edited January 13, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
bubu Posted January 14, 2010 Report Share Posted January 14, 2010 (EDIT: lietoju plašāko (float) castu, jo (int) kasts pakāstu decimāldaļas, bet šī funkcija ir domāta jebkuram skaitlim)Nezinu, ko tu domā ar vārdu "plašāko kāstu", bet tavs kāsts nedarbotos uz 64-bitu php, ja tam tiktu padots integer skaitlis lielāks par 2^53. Jo php floati var saturēt tikai 53 zīmīgos bitus (double mantisa), bet 64-bitu php integeri ir 64-bitu plati. 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.