Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!
  • Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

SQL injection

Electron

Баниран/a
23 април 2007
53
0
So SQL naredbite nema razlika dali se pisuvaat golemi ili mali bukvi sto znaci deka SELECT i identicno so select ili WHERE
so where ili LIKE so like itn. vazno ja svativte poentata

No vazno e da se napomene daka iminjata na tabelite, kolonite ili redovite se custvitelni na golemi i mali bukvi sot znaci
deka id ne e isto so Id ili pak proba ne e isto so PROBA

DO POCNIME SO OSNOVNITE NAREDBI:

SELECT -osnovna naredba na SQL za povikuvanje na kolona ili red od tabela

SELECT <column_list> FROM <table_name> -Povikuvanje na kolona (<column_list>) od tabelata (FROM <table_name>)

<column_list> e lista na koloni na primer izbirame kolona 1 kolona2 itn (col1,col2,col3...)

<column_list> za ova naredba mora da se koristi imeto na kolonata ne mozi da se koristi broevi ili sl tuku mora kolonata da
se povika po ime

<table_name> ime na tabelata moze da bide na pr nekoj korisnik (user) ako barame iformacija za nekoj korisnik ili (config)
ako barame informacija za nekoja web strana ako imame tabela koja ima preku 100 koloni nie nema da senime i ad pisuvame
col1, col2 col3, col4... oti toa e mnogi dolgo zatoa ke zamenime imeto na kolonata so * i ke ke gi povikame site koloni od
baranata tabela


SELECT * FROM test -so ovaa naredba nie ke povikuvame site koloni od tabelata test.Pisuvajki ja ovaaa naredba nie ke ja
dobieme sledanta tabela
----------------
|1 | proba1 |
|----------------|
|2 | Electron |
-----------------

Znaci ednata kolona ja socinuvaat 1 i 2 a vtorata proba1 i Electron, a redvoite se 1 i proba1 vo prviot, a 2 i Electron va
vtoriot.ili za da gi povikame dvete koloni treba da ja napiseme slednata naredba

SELECT id, proba FROM test - znaci prvata kolona ima ime id a vtorata proba

WHERE -se korisri za izbiranje na red. Dail sakame da izbereme red so posebni podatoci ili site redovi


SELECT <column_list> FROM <table_name> WHERE <column> <operator> <expresion> -primer za kako da se povikuvaat redovite


SELECT * FROM test WHERE id=1 - so ovaa naredba nie gi povikuvame site kelii kade sto id=1 a od predhodnata tabela gledame
deka toa e prviot red i ke bide ispisan samo toj t.e.
-------------
|1 | proba1|
-------------

ili ako napiseme SELECT * FROM test WHERE id=2 toa znaci deka gi povikuvame site kelii kade sto id=2 sto znaci acvtomatski
znaci nie ko povikuvame vtoriot red t.e.
---------------
|2 | Electron|
---------------


Osven operatorot = mozeme da koirstime isto taka i <,> ili i nekoi drugi operatori

LIKE - se koristi koga znaeme samo del od imeto na redot no ne go znaeme celoto ime na redot koj sto go barame

SELECT * FROM test WHERE proba LIKE "%tr%" - sto znaci ako vo kolonata proba ima nesto, pa izazot "tr" (bez navodnici),
pa potoa pak sto bilo ke bide selektirano. Sto znaci deka vo nasiot primer nie ke go dobieme slednovo:
---------------
|2 | Electron|
---------------
Ova ko dobivme bidejki izrazot tr go ima samo vo vtorata kolona i zatoa samo toj ke bide pokazan.

Ako pak go napiseme izrazot SELECT * FROM test WHERE proba LIKE "%o%" ke bidat pokazani i dvata reda bidejki bukvata o ja
ima i vo dvata "proba" i vo "Electron"

Kaj SQL naredbite moze da se koristat i bulovi naredbi kako na primer AND (i) ili pak OR (ili).Da gi razgledame selnite
primeri : SELECT * FROM test WHERE id=1 AND id=2 -ova nikogas ne e tocno bidejki ne moze da bide id i 1 i dva i zatoa nema
da se pokaze nisto nas izlez

Ako naredbata AND ja promenime vo OR ka go dobieme slednovo: SELECT * FROM test WHERE id=1 OR id=2 togas ke gi dobieme i
dvata redovi. Istoto ke go dobieme ako ko napiseme i sledniov izraz SELECT * FROM test WHERE id=1 OR LIKE "%o%" zanci i tuka
se ispolneti i dvata uslovi i povtorno ke ostanat i dvata redovi.

ORDER BY <column_name or #> ova e edna od retkite naredbi kade sto moze da se koristat i brojki, i zatoa ja pravi korisna
bidejki hakerite cesto na gi znaat iminjata na kolonite, no gi znaat broevite.Prvata kolona ima reden broj 1,vtorata 2 itn,
a za redovite vazi slednovo prviot red e 0 vtoriot e 1 itn...
So naredbata ORDER BY se koristat i nardedbite ASC (vrednostite na kolonite da odat od najgolema pa kon najmala) I DESC
(vrednostite da odat na kolonite da odat od najmala kon najgolema)

Znaci ako ja napiseme slednata naredba SELECT * FROM test ORDER BY id DESC ke gi dobieme i dvete koloni no so obraten
redosled sto znaci deka poslednata kolona ke bidi prva itn:

--------------
|2 | Electron |
----------------
|1 | proba1 |
----------------
Ako napiseme SELECT * FROM test ORDER BY 1 ASC - ke dobeme sledno

----------------
|1 | proba1 |
|----------------|
|2 | Electron |
----------------
Vo ovaj slucaj ne mora da pisuvame i ASC bidejki nie povikuvame od prva kolona natamu pa zatoa ne mora da pisuvame i ASC
bidejki avtomatski taka se anredeni i taka ke se priakazat

Ako imame na Url prodpage.php?prodID=1 Vo ovaj slucaj veke e zapocnata SQL naredbata i imame nesto slicno na ova

SELECT <column_list> FROM <table_name> WHERE productcol=$_GET('prodID') bidejki SELECT naredbata e veke zapocnata nema da ima
nacin da manipulirame so nea pa zatoa se zapoznavame so nova naredba UNION
<select1> UNION <select2> -UNION naredbata se koristi za izvrsuvanje na dve SELECT naredbi. no podobro e da se koristi
UNION ALL namesto UNION. nema da navleguvam vo detali okolu ova, no so UNION ALL se izvrsuvaat site naredbi i promenlivi i od
<select1> i od <select2> ako imame isti naredbi koi se dupliraat vo <select1> i vo <select2> so UNION ALL ke se izvrsat
site naredbi.Vazno e da se napomene deka brojot na selectirani koloni od <select1> mora da e ist so selektiranite kooni od
<select2>, ako vO<seklect1> ima selectirano 2 koloni i vo <select2>mora da se selektirat isto 4 koloni.
Da vidime eden primer so ovaa naredba:
SELECT * FROM test UNION ALL SELECT * FROM tabela_2. bidejki jas znam deka tabela_2 ima 3 koloni, ovaa naredba nema da se
izvrsi, tuku ke se pojavi nekoja ERROR poraka. Toa ke se sluci poradi toa sto rekovme deka treba da se selektiraat ist broj
na koloni i vo dvete strani na select naredbite, sto ne e slucaj ovde. za da ja popravime ovaa greska ke probame so slednava
naredba: SELECT *, "asfs" UNION ALL SELECT * FROM tabela_2
(posle zvezdata vo pirvata SELECT naredba zapisuvame sto sakame. Ova go pravime za da imenuvame nekoja kolona so cel da se
izramni brojot na koloni i vo dvete strani t.e. da bidat 3 so 3 na dvete strani)

1 2 3
--------------------------------
0 | 1 | proba1 | asfs |
|-------|------------|-----------
1 | 2 | Electron | asfs |
|-------|------------|-----------
2 | dfgd | tutorial1 | gdfgdf |
|-------|------------|-----------
3 | sdkf | test@test | tertert |
|-------|------------|-----------
4 | khgu| sql_tut | uytut |
--------------------------------
 

Electron

Баниран/a
23 април 2007
53
0
So predhonata naredba ka se prikaze ovaa tabela ( sekako bez brojkite okolu nea ). Redovite so broj 0 i 1 i kolonite so broj
1 i dva se od tabelata test a tretata kelija od reedovite 0 i 1 e kolonata sto ja dodadovme vo predhodnata izjava so cel da
izramni brojot na koloni i od tabelata test (redovite 0 i 1) i od i od tabelata tabela_2 (redovi 2,3,4).Znaci toa e zadacata
na UNION ALL, gi povrza tablata test i tabelata tabela_2 i gi spoi vo edna golema tabela.

Ako ja napiseme slednava izjava SELECT 1,2,"sto bilo",3 nie samo gi povikuvame ovie vrednosti. Zabelezavte deka nemam
zapisano FROM.Toa e zatoa sto ne gi povikvame ovie vrednosti od odredena tabela tuku nie samo gi povikuvame vrednostite i
ke zabelezime deka se pravi posebna tabela pod povikanite vrednosti.

Toa e se za ovoj prv tutorial. Se nadevam deka vi se pojasni nesto okolu SQL naredbite ako ima nekoi prasanja mozete da gi
pisite vo ovaa tema i ako znam ke vi pojasnam no i jas ne znam se tuku se trudam kolku sto mozam da naucam i da mozam da vi
objasnam.


Znaci se citame vo mojot sleden tutorial za SQL naredbi i do togas pozdrav...
p.s. Kazete dali ovie tutorijali se jsni i dali treba da prodolzam so ova ili ako treba nesto da se poravi slobodno kazete...
 

pudge

Intern
28 ноември 2007
128
1
zaso da ne smee da postira na stara tema, i sto ima veze toa dali e baniran korisnikot?

se nadevam deka swipe povtorno ke go procita postot na mount_doom ke svati deka nema nisto ironicno vo negoviot post....
 

AMD_fan

Gaining Experience
10 ноември 2007
3.646
139
zaso da ne smee da postira na stara tema

Никој не рече дека не смее да постира на постара тема. Реков да се внимава.

sto ima veze toa dali e baniran korisnikot?

Е па со постот: "Dobar tutorial za pochetnici, brat..." мислам дека му се обраќа на @Electron. A @Electron не може нити да му се заблагодари нити да му реплицира. Затоа спомнав да не се постираат непотребни постови.
 

Нови мислења

Последни Теми

Статистика

Теми
49.371
Мислења
1.010.420
Членови
36.676
Најнов член
Kazanizam

ит маркет

На врв Дно