Sql injection embedded code
Ik ben bezig met een video script cms en nu heb ik het volgende probleem.
Als je een video embed code vanuit een textarea naar een DB wilt schrijven, hoe beveilig je dit tegen SQL injections?
Het iframe gebeuren kan niet omdat de embedded code naar een DB geschreven wordt.
Heeft het zin om te filteren op bepaalde sql statements als "OR" of zover ik weet komt ";" nooit voor in een embedded code.
Zou filteren op "OR" en ";" genoeg zijn?
Toevoeging op 07/12/2010 14:45:50:
<object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/PfAWReBmxEs?fs=1&hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PfAWReBmxEs?fs=1&hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object>
Ik zie net dat youtube & gebruikt maar dit is natuurlijk ook te controleren.
";" mag neit tenzij &
Weet niemand dit? ik neem aan dan meer mensen hier een probleem mee hebben?
type (in dit geval 'youtube')
width (in dit geval '480')
height (in dit geval '385')
url (in dit geval 'http://www.youtube.com/v/PfAWReBmxEs?fs=1&hl=en_US')
en dat je aan de hand van de ingevoerde waarden de complete code opbouwt? In je database zou je dan bijvoorbeeld een tabel "video_code" krijgen met de velden 'id', 'type', 'width', 'height' en 'url'.
Het is meer de vraag hoe voorkom je xss.
Het maakt niet uit als de code niet werkt of klopt want wordt toch eerst bekeken(goedgekeurd) voor het de web-site op gaat.
Het moet dus echt alleen checken op sql injection,xss (gisteren zitten lezen over sql injection en xss lekken, als je voorbeelden ziet wordt je anstig)
TJVB tvb op 08/12/2010 15:28:26:
Hoe beveilig je normaal gesproken SQL Injection? Het maakt niet uit wat voor tekstuele data je in je database opslaat maar de beveiliging zal hetzelfde zijn. (Voor andere types zoals int,inet etc kan er nog meer controle)
Het is meer de vraag hoe voorkom je xss.
Het is meer de vraag hoe voorkom je xss.
Dit is het antwoord.
SQL injection hou je tegen met
mysql_real_escape_string (eventueel mysql_escape_string).
http://php.net/manual/en/function.mysql-real-escape-string.php
Bij het weergeven (SELECT * ...) zal je dan stripslashes nodig hebben.
Ik ga wel een hoop testen, normaal gebruik ik prepared sql statements of de mysql_real_escape_string.
Kris Peeters op 08/12/2010 15:39:18:
Zoals bij andere velden:
SQL injection hou je tegen met
mysql_real_escape_string (eventueel mysql_escape_string).
http://php.net/manual/en/function.mysql-real-escape-string.php
Bij het weergeven (SELECT * ...) zal je dan stripslashes nodig hebben.
SQL injection hou je tegen met
mysql_real_escape_string (eventueel mysql_escape_string).
http://php.net/manual/en/function.mysql-real-escape-string.php
Bij het weergeven (SELECT * ...) zal je dan stripslashes nodig hebben.
Je hebt niet eens op de link gekeken die je geeft voordat je post?!?!?!?!?
Met mysql_real_escape_String heb je juist geen stripslashes meer nodig, aangezien je geen addslashes gebruikt.
Karel hertens op 08/12/2010 15:42:43:
Ik ga wel een hoop testen, normaal gebruik ik prepared sql statements of de mysql_real_escape_string.
Dat is nog steeds je database beveiliging. Het zou raar zijn als je een naam veld minder goed beveiligd "omdat het alleen voor namen is"
Elk veld geeft mogelijkheden voor een lek, en elk lek kan gebruikt worden.
Na de SQL injection moet je gaan kijken naar de XSS injection.
Oke, bedankt voor de reacties.
Karl Karl op 08/12/2010 15:43:18:
Met mysql_real_escape_String heb je juist geen stripslashes meer nodig, aangezien je geen addslashes gebruikt.
(tenzij je magic quotes aanstaan...)
Ozzie PHP op 08/12/2010 15:49:28:
(tenzij je magic quotes aanstaan...)
(Die je natuurlijk niet aan hebt staan)
Ozzie PHP op 08/12/2010 15:49:28:
(tenzij je magic quotes aanstaan...)
Karl Karl op 08/12/2010 15:43:18:
Met mysql_real_escape_String heb je juist geen stripslashes meer nodig, aangezien je geen addslashes gebruikt.
(tenzij je magic quotes aanstaan...)
Maar die horen uit te staan. Zie php.net.
Gewijzigd op 08/12/2010 15:54:23 door Ozzie PHP
Ozzie PHP op 08/12/2010 15:53:16:
Ja normaal gesproken wel... maar dat wil helaas niet zeggen dat dat ook altijd zo is (zo had een provider ze vrolijk aan staan in een overkoepelende php.ini)
Dan zit je bij een slechte hoster.
tis inmiddels al opgelost gelukkig ;)
magic_quotes_gpc = On
; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off
; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
Fijn die hosting providers :) probleem is denk ik opgelost.