Uždarbis.lt: AR saugu naudoti tokį kodą? - Uždarbis.lt

Peršokti prie turinio



IT paslaugų skelbimams skirta skiltis Dizaino ir programavimo paslaugos
  • (2 Puslapiai)
  • +
  • 1
  • 2
  • Jūs negalite kurti naujos temos
  • Jūs negalite atsakyti į šią temą

Narys yra atsijungęs nerjok 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Patvirtinti nariai
  • Atsiliepimai: +1 -0
  • Pranešimai: 499
  • Kartu nuo: 2012-01-27
  • Vardas:Jonas

2018-02-15 03:36 (#21)

Rodyti pranešimąApache, 2018-02-14 12:18, pasakė:

"Dabar pas mane yra pliki kodai, tai nėra profesionalu" - nonsense. Kur matei PHP.net parasyta, kad neobjektinis programavimas yra neprofesionalus? Ar vadovaujiesi neoficialiais saltiniais ir standartais? To daryti nevertetu. Objektinis galbut patogesnis, bet man tik su DB greiciau dirbasi. Kurti tas klases zaidimas, taip pat apsikrovimas + overkill. Tiesa, PHP7 truputi greiciau veikia klases, bet neaisku, kaip ateityje bus. ;)


Turi į git'ą įkėlęs source kokį? Idomu kaip atrodo tas tavo 'optimizuotas' kodas be frame'ų (back, front), jaučiu koks WET anti-pattern ar SPA max 9k ane? Paveiksliukas

Šiandien mano gimtadienis, kaip ir vakar, bet bus ir rytoj.
1


Narys yra atsijungęs simasj 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Patvirtinti nariai
  • Atsiliepimai: +16 -0
  • Pranešimai: 277
  • Kartu nuo: 2007-04-30
  • Miestas:Vilnius

2018-02-15 10:27 (#22)

Rodyti pranešimądowista, 2018-02-02 04:20, pasakė:

Sveiki. Dar tik mokausi dirbti su OOP, tai norėjau paklausti ar čia saugu taip kurti klasių funkcijas, kad nurodyti iškart Mysql kodą.
<.... SKIPPED>

ir
  $nauja = new Imones();   
 $nauja -> imone = $_POST['imone'];
      $nauja -> darbuotojas = $_POST['darbuotojas'];
  $nauja -> Prideti("insert into imones (pavadinimas,darbuotojo_id) values   ('".$nauja -> imone."','".$nauja -> darbuotojas."')");

            if ($nauja -> ats == 1) {
                   echo '<div class="show" align="left">'.
    $nauja -> imone.',&nbsp;Priklauso:&nbsp;<span style="color: green;">'.$nauja -> darbuotojas().'</span>
    </div> ';
            }



Labas,

Gal ne visai apie OOP, bet dėl saugumo tokio kodo nenaudok - tavo kodas turi "sql injection" pažeidžiamumą (vulnerability). Konkrečiai šita vieta:

$nauja -> imone = $_POST['imone'];
      $nauja -> darbuotojas = $_POST['darbuotojas'];
  $nauja -> Prideti("insert into imones (pavadinimas,darbuotojo_id) values   ('".$nauja -> imone."','".$nauja -> darbuotojas."')");


Šį pranešimą redagavo simasj: 2018-02-15 10:28

0


Narys yra atsijungęs Apache 

  • Išmestas iš forumo
  • AkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +0 -0
  • Pranešimai: 126
  • Kartu nuo: 2018-01-22

2018-02-24 14:04 (#23)

Rodyti pranešimąnerjok, 2018-02-15 03:36, pasakė:

Turi į git'ą įkėlęs source kokį? Idomu kaip atrodo tas tavo 'optimizuotas' kodas be frame'ų (back, front), jaučiu koks WET anti-pattern ar SPA max 9k ane? Paveiksliukas


Toks, kuris pasiekia virš 10 000 kodo eilučių 0.02 sek. krovimo laiko.

Apache is functioning normally
1


Narys yra atsijungęs wi_lius 

  • Užkietėjęs dalyvis
  • AkisAkisAkisAkis
  • Grupė: Patvirtinti nariai
  • Atsiliepimai: +6 -0
  • Pranešimai: 1716
  • Kartu nuo: 2007-08-31

2018-02-25 04:26 (#24)

Rodyti pranešimąApache, 2018-02-24 14:04, pasakė:

Toks, kuris pasiekia virš 10 000 kodo eilučių 0.02 sek. krovimo laiko.


Pamiršai pridėti nuorodą į Github.
0


Narys yra atsijungęs kashiukas 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Nariai
  • Atsiliepimai: +0 -0
  • Pranešimai: 507
  • Kartu nuo: 2008-03-28
  • Vardas:Karolis
  • Miestas:Vilnius

2018-02-28 00:45 (#25)

Rodyti pranešimąApache, 2018-02-03 18:58, pasakė:

+ Jeigu tik 1 užklausa (pavyzdžiui, pridėjimo) į duomenų bazę, tai „Prepared statement“ naudojimas yra optimizacijos klaida, kuri nedovanotina profesionalams. Visos funkcijos privalo būti naudojamos pagal paskirtį. Filtravimo funkcijos lygiai taip pat.



PHP nesu kodinęs, bet ar prepared statements nėra patikimas būdas išvengti SQL injekcijų? Kokia alternatyva, `mysql_real_real_real_escape` ant kiekvieno argumento?
Happy hacking!
0


Narys yra atsijungęs Apache 

  • Išmestas iš forumo
  • AkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +0 -0
  • Pranešimai: 126
  • Kartu nuo: 2018-01-22

2018-02-28 17:41 (#26)

Rodyti pranešimąkashiukas, 2018-02-28 00:45, pasakė:

PHP nesu kodinęs, bet ar prepared statements nėra patikimas būdas išvengti SQL injekcijų? Kokia alternatyva, `mysql_real_real_real_escape` ant kiekvieno argumento?


Prepared statements paskirtis nėra apsaugoti nuo injekcijų. Tikslas yra paruošti kokią tai nors užklausą, kad galėtum ją panaudoti dar kartą, su galimybe pakeisti argumentus. Logiškiausia prepared statements naudoti kokiame nors cikle arba kur tikrai reikia kreiptis į tą pačią lentelę daugiau nei 2 kartus.

Taigi, paruoši užklausą, ją įvykdai (iš viso kreipėsi 2 kartus į duomenų bazę), o kam to reikia, jeigu gali tik 1 kartą (iškarto įvykdyti)? Ir prieš įterpiant duomenis, filtravimas privalomas, simbolių suskaičiavimas irgi (po filtravimo sumažės arba padidės, priklausomai nuo panaudotos funkcijos).

p.s jei panaudoji prepared statements, tada taip, nereikia naudoti „::real_escape_string“, tačiau jeigu ne - turėtum. Viskas turi paskirtį, tai naudokite pagal paskirtį, o ne kažkieno išgalvotais mitais ar standartais.
Apache is functioning normally
0


Narys yra atsijungęs Apache 

  • Išmestas iš forumo
  • AkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +0 -0
  • Pranešimai: 126
  • Kartu nuo: 2018-01-22

2018-02-28 18:14 (#27)

Rodyti pranešimąwi_lius, 2018-02-25 04:26, pasakė:

Pamiršai pridėti nuorodą į Github.


Nu kas čia dabar? :huh: Eik padaužyti savo galvą į sieną daugiau kartų, gal protingesnis tapsi ir suprasi, kad neprivalau įrodinėti savo žinių, taip pat nesi pasaulio bamba ar turintis aukštesnį stažą už mane. ^_^

... nebent siūlai darbą.
Apache is functioning normally
1


Narys yra atsijungęs wi_lius 

  • Užkietėjęs dalyvis
  • AkisAkisAkisAkis
  • Grupė: Patvirtinti nariai
  • Atsiliepimai: +6 -0
  • Pranešimai: 1716
  • Kartu nuo: 2007-08-31

2018-02-28 23:25 (#28)

Rodyti pranešimąApache, 2018-02-28 18:14, pasakė:

Nu kas čia dabar? :huh: Eik padaužyti savo galvą į sieną daugiau kartų, gal protingesnis tapsi ir suprasi, kad neprivalau įrodinėti savo žinių, taip pat nesi pasaulio bamba ar turintis aukštesnį stažą už mane. ^_^

Nu tai tikėjausi, kad turėdamas tiek patirties ir tiek žinių apie spartą, kad gali pasiekti 0.02 greitį (!!!), tikrai būsi kokią open-source biblioteką parašęs, ar bent jau kokį savo projektą įsikėlęs parodyt... O dabar kaip užsikirtus ploktelė vis apie optimizuotą kodą šneki ir abejotinus patarimus dalini...

Galima dar kartą pasikartoti:

Citata

Premature optimization is the root of all evil -- DonaldKnuth

https://stackoverflo...ared-statements
https://asktom.oracl...D:1993620575194

Šį pranešimą redagavo wi_lius: 2018-02-28 23:28

2


Narys yra atsijungęs kashiukas 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Nariai
  • Atsiliepimai: +0 -0
  • Pranešimai: 507
  • Kartu nuo: 2008-03-28
  • Vardas:Karolis
  • Miestas:Vilnius

2018-03-01 08:42 (#29)

Rodyti pranešimąApache, 2018-02-28 17:41, pasakė:

Prepared statements paskirtis nėra apsaugoti nuo injekcijų.


Išskyrus tą dalį, kuri 100% apsaugo nuo sql ijekcijų. Bent jau normaliose kalbose. :-)



Jei ne paslaptis, kokio dydžio ir kokio patirties pasiskirstymo komandose teko dirbti?


Edit: Appeal to authority: https://www.owasp.or...ized_Queries.29

Šį pranešimą redagavo kashiukas: 2018-03-01 14:26

Happy hacking!
0


Narys yra atsijungęs Apache 

  • Išmestas iš forumo
  • AkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +0 -0
  • Pranešimai: 126
  • Kartu nuo: 2018-01-22

2018-03-02 12:33 (#30)

Rodyti pranešimąkashiukas, 2018-03-01 08:42, pasakė:

Išskyrus tą dalį, kuri 100% apsaugo nuo sql ijekcijų. Bent jau normaliose kalbose. :-)



Jei ne paslaptis, kokio dydžio ir kokio patirties pasiskirstymo komandose teko dirbti?


Edit: Appeal to authority: https://www.owasp.or...ized_Queries.29


Taip, apsaugo nuo SQL injekcijų, nes neįvykdo užklausos tiesiogiai. Bet neapsaugo nuo HTML žymių.

Jeigu visur naudosi prepared statements, tai projekto našumas bus tragiškas. Tarkime, 10 skirtinguose lentelėse įterpi duomenis ar juos atnaujini, taigi, su prepared statements bus 10 * 2 = 20 užklausų. Mikro optimizacijos klaida virsta į masinę optimizacijos klaidą, kuri kainuos 0.** sek. krovimo laiko padidėjimu, jeigu daugiau užklausų, virstų net į sekundes.

„::real_escape_string“ sunaudoja žymiai mažiau našumo.

Rodyti pranešimąwi_lius, 2018-02-28 23:25, pasakė:

Nu tai tikėjausi, kad turėdamas tiek patirties ir tiek žinių apie spartą, kad gali pasiekti 0.02 greitį (!!!), tikrai būsi kokią open-source biblioteką parašęs, ar bent jau kokį savo projektą įsikėlęs parodyt... O dabar kaip užsikirtus ploktelė vis apie optimizuotą kodą šneki ir abejotinus patarimus dalini...

Galima dar kartą pasikartoti:

https://stackoverflo...ared-statements
https://asktom.oracl...D:1993620575194


Eik iš naujo persiskaityti dokumentaciją.

https://joshduff.com...sqli-prepare.md
Apache is functioning normally
1


Narys yra atsijungęs Apache 

  • Išmestas iš forumo
  • AkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +0 -0
  • Pranešimai: 126
  • Kartu nuo: 2018-01-22

2018-03-02 15:07 (#31)

Rodyti pranešimąnerjok, 2018-02-15 03:36, pasakė:

Turi į git'ą įkėlęs source kokį? Idomu kaip atrodo tas tavo 'optimizuotas' kodas be frame'ų (back, front), jaučiu koks WET anti-pattern ar SPA max 9k ane? Paveiksliukas


Tu irgi nusikalbi kažką.
Apache is functioning normally
0


Narys yra atsijungęs nerjok 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Patvirtinti nariai
  • Atsiliepimai: +1 -0
  • Pranešimai: 499
  • Kartu nuo: 2012-01-27
  • Vardas:Jonas

2018-03-04 11:19 (#32)

Rodyti pranešimąApache, 2018-03-02 15:07, pasakė:

Tu irgi nusikalbi kažką.


Tai ko čia rašinėji tuos briedus apie 'optimizacijas', jei negali įrodyt? Tu net nesupratai apie ką aš klausiau.
Šiandien mano gimtadienis, kaip ir vakar, bet bus ir rytoj.
0


Narys yra atsijungęs kashiukas 

  • Dažnas dalyvis
  • AkisAkisAkis
  • Grupė: Nariai
  • Atsiliepimai: +0 -0
  • Pranešimai: 507
  • Kartu nuo: 2008-03-28
  • Vardas:Karolis
  • Miestas:Vilnius

2018-03-05 00:04 (#33)

Rodyti pranešimąApache, 2018-03-02 12:33, pasakė:

Taip, apsaugo nuo SQL injekcijų, nes neįvykdo užklausos tiesiogiai. Bet neapsaugo nuo HTML žymių.


Ar tikrai reikia escapinti htmlą dedant į DB?

Citata

Eik iš naujo persiskaityti dokumentaciją.

https://joshduff.com...sqli-prepare.md


Apačioj parašyta, kad PDO pagal nutylėjimą naudoja client-side prepared statements.
Happy hacking!
0


Narys yra atsijungęs AmberD 

  • Išmestas iš forumo
  • AkisAkisAkis
  • Grupė: Išmesti
  • Atsiliepimai: +8 -1
  • Pranešimai: 475
  • Kartu nuo: 2012-03-30
  • Vardas:Gintare
  • Miestas:Klaipeda

2018-03-05 00:06 (#34)

Labai teisingai pastebėta, prepared sakinių kvailas naudojimas (o dauguma taip ir naudoja) pridaro daugiau žalos nei apsiėjimas be jų.
G.D.
0


Pasidalinti šia tema:


  • (2 Puslapiai)
  • +
  • 1
  • 2
  • Jūs negalite kurti naujos temos
  • Jūs negalite atsakyti į šią temą

1 nariai(-ų) skaito šią temą
0 nariai(-ių), 1 svečiai(-ių) ir 0 slapti(-ų) nariai(-ių)


Užklausų vykdymo statistika

  • Dabar yra: 2018-06-19 07:00

Tas nuostabus prisijungimo momentas


Prisijungimo nustatymai