Topic: sql injekcijos
Ar kas gali paaiskinti kaip jos yra daromos, per kur daromos/vedamos ir pan.
PHP ir MySQL programavimas, SQL užklausos, duomenų bazės, PHP scriptai, pagalba, diskusijos, pamokos ir straipsniai.
You are not logged in. Please login or register.
PHP ir MySQL → SQL užklausos ir duomenų struktūros → sql injekcijos
Ar kas gali paaiskinti kaip jos yra daromos, per kur daromos/vedamos ir pan.
Per kur daromos/vedamos:
Per visur kur tik imanoma ivesti vartotojui kazkokia info ir ta info apdorojama/kisama i mysql.
Kaip jos daromos:
Injection - iskiepis. Vadinas bandoma iterpti/iskiepyti vartotojo norima uzklausa i jau esama kode mysql uzklausa.
Per kur daromos/vedamos:
Per visur kur tik imanoma ivesti vartotojui kazkokia info ir ta info apdorojama/kisama i mysql.
Kaip jos daromos:
Injection - iskiepis. Vadinas bandoma iterpti/iskiepyti vartotojo norima uzklausa i jau esama kode mysql uzklausa.
Prisiiskaiciu daug visokiu pvz bet niekas nevikia ant mano saito ta prasme gal ir gerai bet norisi isitikinti ar mano svetaine saugi.. :)
Siaip pats pakuriai koki tai webuka su inputu, be jokiu apsaugu, ir iterpinejant
';-- Drop table users;
ar panasiai, nesuveikia )
Siaip pats pakuriai koki tai webuka su inputu, be jokiu apsaugu, ir iterpinejant
';-- Drop table users;
ar panasiai, nesuveikia )
Duok webuko adresą, patikrinsim. Tai ką tu tikrini yra daug šansų ir priežaščių, kodėl neveikia:
a) dažniausiai nepalaikoma multi-query;
b) kartais nera drop teisių;
c) ...
Naudojant PDO injekcijų galima 100% išvengti?
Naudojant PDO injekcijų galima 100% išvengti?
Na reikia teisingai naudoti, bet 100% apsauga yra nevartotinas terminas jei ką:)
PDO palaiko multiquery, dėl to lengviau injekcija padaryti (kai PDO neteisingai naudojamas).
Taip viskas priklauso nuo to, kaip naudosi. Neteisingai naudojant jokio skirtumo ar PDO ar ne - bus SQL injekcija ir viskas.
Taip viskas priklauso nuo to, kaip naudosi. Neteisingai naudojant jokio skirtumo ar PDO ar ne - bus SQL injekcija ir viskas.
Tarkim visos užklausos, kurios dirba su vartotojo duomenimis (GET, POST ir pan.) naudoja PDOStatement. Dalis duomenų perduodama tiesiai, be jokio apdorojimo. Ar tokia sistema yra 99,99% apsaugota nuo injekcijų?
Jeigu visur naudoji parametrus ir tiesiogiai niekur neklijuoji jokių (ypač vartotojo) reiškmių, tai tada taip - būsi 99,99% apsaugotas.
100% nėra, nes egzistuoja 2-o lygio SQL injectionai ir galimi draiverio bug'ai ir/arba dar kitos situacijos, bet jos jau labai retos ir/arba labai sunkiai eksplotuojamos, todėl galima sakyti kad esi saugus.
JuliusGr wrote:Siaip pats pakuriai koki tai webuka su inputu, be jokiu apsaugu, ir iterpinejant
';-- Drop table users;
ar panasiai, nesuveikia )
Duok webuko adresą, patikrinsim. Tai ką tu tikrini yra daug šansų ir priežaščių, kodėl neveikia:
a) dažniausiai nepalaikoma multi-query;
b) kartais nera drop teisių;
c) ...
čia ant localhosto. Kiek girdėjau nuogirdų, tai atseit net neina iš localhosto indžektint. Bet nesigilinau į šitas nuogirdas.
Anyway, gal nesuveikia ir dėl to, kad sql užklausai jau paduodu '$kintamaji', o ne '$_POST['laukelis']'..?
O kas liečia pačią db, tai prisijunginėju kaip root'eris, ir jam viskas leidžiama. :)
čia ant localhosto.
localhost - releatyvus dalykas. Kiekvienam serveriui savo puslpiai yra localhost'e (-;
Gali būt serveris/tinklas taip sukonfigūruotas, kad kažkas iš interneto/lan'o gali prieiti prie tavo scripto/programos ir užvalgyti tavo kompą.
Beto, neplanuoji scripto/programos niekur kitur paleist?
Kiek girdėjau nuogirdų, tai atseit net neina iš localhosto indžektint
Reikia remtis faktais, o ne nuogirdom. Viskas priklauso nuo konfigūracijos..
Anyway, gal nesuveikia ir dėl to, kad sql užklausai jau paduodu '$kintamaji', o ne '$_POST['laukelis']'..?
Ne. Ne dėlto, o dėl mano paminėtų priežaščių. Jeigu pas tave yra $kintamasis = $_POST['kintamasis']; tai čia nėra nieko tikrinama...
O kas liečia pačią db, tai prisijunginėju kaip root'eris, ir jam viskas leidžiama. :)
Dtandartiškai nuo vartotojo nepriklauso, ar leidžiamos multi-užklausos ar ne. Priklauso nuo SQL užklausų funkcijų/nustatymų, kuriuos naudoji.
Kilo ka tik man mintis ir ar tai veiktu ir ar tai pasiteisintu?
db pavadinimas, lenteliu pavadinimai ir eiluciu pavadinimai gal net patys duomenys butu sifruojami per md5 t.y. tarkim lenteles pavadnimimas yra md5 kodas o kai ji naudoja php uzklausoje jis igauna duota kazkoki tekstini pavadinima.?..
Kilo ka tik man mintis ir ar tai veiktu ir ar tai pasiteisintu?
db pavadinimas, lenteliu pavadinimai ir eiluciu pavadinimai gal net patys duomenys butu sifruojami per md5 t.y. tarkim lenteles pavadnimimas yra md5 kodas o kai ji naudoja php uzklausoje jis igauna duota kazkoki tekstini pavadinima.?..
Kažkokia nesamonė. MD5 - vienkryptis algoritmas.
Ir kokiu tikslu kažką šifruoti? Jeigu tinklapis blogai suprogramuotas, tai reikia taisyti tas klaidas/spragas, o ne kažką kitoje vietoje šifruoti.
skuelas wrote:Kilo ka tik man mintis ir ar tai veiktu ir ar tai pasiteisintu?
db pavadinimas, lenteliu pavadinimai ir eiluciu pavadinimai gal net patys duomenys butu sifruojami per md5 t.y. tarkim lenteles pavadnimimas yra md5 kodas o kai ji naudoja php uzklausoje jis igauna duota kazkoki tekstini pavadinima.?..Kažkokia nesamonė. MD5 - vienkryptis algoritmas.
Ir kokiu tikslu kažką šifruoti? Jeigu tinklapis blogai suprogramuotas, tai reikia taisyti tas klaidas/spragas, o ne kažką kitoje vietoje šifruoti.
Nu nezinau :) galvoju kaip padaryti saugesnia svetaine...
Kol tu galvoji kaip apsaugoti svetainę, tai siūlau pradžiai pasirūpinti backup;ais.
Visvien, jeigu kažkas tave darys, tai bent jau duomenis turėsi :)
Kol tu galvoji kaip apsaugoti svetainę, tai siūlau pradžiai pasirūpinti backup;ais.
Visvien, jeigu kažkas tave darys, tai bent jau duomenis turėsi :)
backupai daromi kas 24 valandas :)
O jei padaryciau tarkim su define uzklausas ar tai nereikstu kad uzklausu neis keisti ir jais manipuliuoti?
O jei padaryciau tarkim su define uzklausas ar tai nereikstu kad uzklausu neis keisti ir jais manipuliuoti?
Bijai vilko - neik į mišką.
Tai gal dar pradėk definint visas php f-jas? :D
Kaži kiek laiko užims query'ių define'nimas ir kiek laiko užims:
$esacpe = mysql_real_escape_string($_POST['input']);
Aišku, galima prisigalvot ir prisirašyt, bet nepamiršk, kad kai pats rašysi kodą ir parašius klaidingą užklausą pradės tavo app spjaudytis error'ais.
O ir aplamai jau čia reiktų klasę rašytis, jeigu nurauki, kaip reikės pačio darytas klaidas debuginti - rašykis, nepakenks.. :)
Kita vertus kam išradinėti dviratį..
Jau geriau imi framework'ą, naudoji form_validation helper'ius ir nematai problemų.
O jei padaryciau tarkim su define uzklausas ar tai nereikstu kad uzklausu neis keisti ir jais manipuliuoti?
Jeigu užklausa neteisinga ir yra galimybe modifikuoti parametrus, tai jokio skirtumo ar ji define'inta ar ne, nes ne pati užklausa yra keičiama, o jos parametrai.
PHP ir MySQL → SQL užklausos ir duomenų struktūros → sql injekcijos
Powered by PunBB, supported by Informer Technologies, Inc.