DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Glasanje: prevencija "SQL injection" (http://www.devprotalk.com/showthread.php?t=7875)

Dragi Tata 16. 09. 2009. 16:18

Glasanje: prevencija "SQL injection"
 
Недавно сам видео овај текст: http://bobby-tables.com/

Па ме интересује како радни народ спречава сигурносни пропуст познат по имену "SQL injection" илити у преводу убризгавање SQLa. Да ли радите "санитизацију" улаза, или користите параметаризоване упите или не радите ништа по том питању...

Blood 16. 09. 2009. 16:22

pa..osim escape-ovanja ulaza, ja imam i black listu reci (mysql f-ja) koje se filtriraju, kao zastita i od blind SQL Injection.

U sustini zabranjujem INSERT, DELETE, SELECT, SLEEP ...

robi-bobi 16. 09. 2009. 16:29

^ taj filtar bi trebao biti pametan kako ne bi filtrirao tekst:
"your select button is not working"

ranije sam koristio mysql_real_escape_string
sad PDO

Blood 16. 09. 2009. 16:52

^ u pravu si, pogresno sam se izrazio malopre. Predjasnji post se odnosio na podatke gde sam korisnik ne bi trebao da ima kontakta sa samim sql upitom

dinke 16. 09. 2009. 17:42

Filter input - escape output. Sve dok se drzis te mantre sve je ok ;)

jablan 16. 09. 2009. 19:36

Kad se koristi Rails, logično je (iz primera na bobby-tables.com):
Kôd:

Person.find :all, :conditions => ['id = ? or name = ?', id, name]
Skoro sam naišao na Sequel - još jedan zgodan DB toolkit za Ruby (kad nema potrebe za celom ActiveRecord mašinerijom). Tamo se filterovanje datasetova radi ovako:
Kôd:

  dataset.filter(:name => 'abc')
  dataset.filter('name = ?', 'abc')

  dataset.filter{|o| o.value > 100}
  dataset.exclude{|o| o.value <= 100}

  dataset.filter(:value => 50..100)
  dataset.where{|o| (o.value >= 50) & (o.value <= 100)}

  dataset.where('value IN ?', [50,75,100])
  dataset.where(:value=>[50,75,100])

  dataset.filter(:name => 'abc').first
  dataset[:name => 'abc'] # same as above

  # Filter using a subquery
  dataset.filter{|o| o.price > dataset.select(o.avg(price) + 100)}

http://sequel.rubyforge.org/rdoc/fil...ring_rdoc.html

ivanhoe 16. 09. 2009. 20:27

ako koristis odgovarajuce escape-ovani input ili prepared statements to bi trebalo da je to... za XSS treba jos escapeovati i output (na odgovarajuci nacin, zavisno da li ide u html ili u atribute ili eventualno url) i onda moozes relativno mirno da spavas...

Dragi Tata 17. 09. 2009. 16:19

За сада ми се допадају Робијев и Јабланов одговор. Него, баш ме занима шта мисле Дејан Топаловић, Дегојс и још пар људи који се не јављају.

LiquidBrain 17. 09. 2009. 17:40

Definitivno PDO i prepared statements... Prepared statements su dobro resenje i zbog performansi, pogotovu ako se isti upit pojavljuje par puta.

Elem, sto se tice PDO-a mora dobro da se pazi, jer je on samo jedna linija odbrane... Definitivno preporucujem stripovanje specijalnih karaktera iz svih user input-a, ili enkodovanje istih.

ivanhoe 17. 09. 2009. 19:34

ima i mysqli prepared statements, kad smo vec kod toga, ne mora pdo..


Vreme je GMT +2. Trenutno vreme je 06:38.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.