Ja, als jij een var in een query niet beveiligt kunnen ze daar gewoon een deel van een query instoppen waardoor ze dingen kunnen toevoegen, de database leeggooien etc.
- Zoek script.
-
23-05-2009, 10:16 #16
- Berichten
- 285
- Lid sinds
- 16 Jaar
-
23-05-2009, 10:24 #17
- Berichten
- 571
- Lid sinds
- 17 Jaar
Onzin als het tussen de '%".$_GET['q']."%' staat kunnen ze er amper/niks mee.
Wat ik altijd doe voor de zekerheid is: $qry = htmlspecialchars($_GET['q'], ENT_QUOTES);
-
23-05-2009, 11:39 #18
- Berichten
- 492
- Lid sinds
- 16 Jaar
Oke zal ik onthouden:)
Waar staat End_quotes voor?
Ik heb nu bijna alles werkend. op 1 ding na.
$zoek2 = "SELECT * FROM muziek WHERE titel LIKE'%".$_GET['q']."%' AND WHERE soort='".$_GET['zoeksoort']."'";
Maar hier zit geloof ik geen fout in of wel?
-
23-05-2009, 11:44 #19
- Berichten
- 249
- Lid sinds
- 17 Jaar
Ja een 'WHERE' is genoeg:)
-
23-05-2009, 11:50 #20
- Berichten
- 492
- Lid sinds
- 16 Jaar
Bedankt marc.
Ik dacht dat where 2 keer moest:)
-
23-05-2009, 12:21 #21
- Berichten
- 571
- Lid sinds
- 17 Jaar
ENT_QUOTES betekend dat hij ook de enkele aanhalingstekens vervangt door speciale html tekens.
http://nl.php.net/htmlspecialchars
-
23-05-2009, 19:09 #22
- Berichten
- 376
- Lid sinds
- 18 Jaar
Origineel gepost door Aaron Peereboom
Nee dat moet tussen ``. Dat hoort gewoon bij mysql. Probeer maar eens in je php script met ``
EDIT: O ik zie al dat het lukt. Bij mijn server lukt het nooit zonder ``. Dan is die van mij gewoon 'beter' geconfigureerd (beter betekent hier volgens de normale PHP en MySql 'regels'). Wen je maar aan met de ``. Als je straks je website verhuist kan het problemen opleveren.
-
23-05-2009, 21:07 #23
- Berichten
- 492
- Lid sinds
- 16 Jaar
Origineel gepost door Rolf T.
Elke variable/invoerveld ect moet je beveiligen, althans dat doe ik.
gewoon, omdat het veiliger voelt. elke input veld (GET/POST) gebruik ik trim(htmlspecialchars($_GET['q']))
en netals dannyvw zei, voor in queryies mysql_real_escape_string..
$result = mysql_real_escape_string("SELECT * FROM muziek WHERE id='".$_GET['id']."'");
Is dan meteen de $_GET beveiligt? of moet die dan ook nog apart ?
Of de get appart beveiligen? En is het zo goed gebeurt?
$getid = htmlspecialchars('".$_GET['id']."', ENT_QUOTES);
$result = mysql_real_escape_string("SELECT * FROM muziek WHERE id=$getid");
-
23-05-2009, 21:20 #24
- Berichten
- 376
- Lid sinds
- 18 Jaar
Je mysql_real_escape_string't je variabele, dus mysql_real_escape_string($_GET['id']).
-
23-05-2009, 21:37 #25
- Berichten
- 571
- Lid sinds
- 17 Jaar
Die 2de is goed. Ik zou $getid vanwege beveiligings reden nog wel met enkele aanhalingstekens in de query zetten. Desondanks dat het een getal is.
Origineel gepost door Nigel Meijer
Dus een query word:
$result = mysql_real_escape_string("SELECT * FROM muziek WHERE id='".$_GET['id']."'");
Is dan meteen de $_GET beveiligt? of moet die dan ook nog apart ?
Of de get appart beveiligen? En is het zo goed gebeurt?
$getid = htmlspecialchars('".$_GET['id']."', ENT_QUOTES);
$result = mysql_real_escape_string("SELECT * FROM muziek WHERE id=$getid");
-
23-05-2009, 21:54 #26
- Berichten
- 376
- Lid sinds
- 18 Jaar
Origineel gepost door René Vennik
Desondanks dat het een getal is.
id=5 OR 1=1; DROP TABLE;
Dan is je tabel weg.
-
23-05-2009, 21:55 #27
- Berichten
- 492
- Lid sinds
- 16 Jaar
Origineel gepost door René Vennik
Die 2de is goed. Ik zou $getid vanwege beveiligings reden nog wel met enkele aanhalingstekens in de query zetten. Desondanks dat het een getal is.
stel als ik een variabel heb.
$variabel = '100';
Is het dan ook veiliger om dit te doen?
$variabel = htmlspecialchars('100', ENT_QUOTES);
Aanvullend bericht:
Dus mensen kunnen gewoon via de url me tabel verwijderen als ik geen ' ' gebruik?Laatst aangepast door N. Meijer : 23-05-2009 om 21:57 Reden: Automatisch samengevoegd.
-
23-05-2009, 22:06 #28
- Berichten
- 571
- Lid sinds
- 17 Jaar
Ja dat bedoel ik ook er moeten dus quotes omheen.
Origineel gepost door Peter W.
Maakt niet uit (of het een getal is of niet), het gevaar zonder aanhalingstekens is SQL injection. Stel jij maakt van id=5 in de URL het volgende:
id=5 OR 1=1; DROP TABLE;
Dan is je tabel weg.
Volgens mij kan dat alleen in mysqli 2 queries achter elkaar zetten, maar dat weet ik niet zeker.Laatst aangepast door René Vennik : 23-05-2009 om 22:07 Reden: Automatisch samengevoegd.
-
23-05-2009, 22:12 #29
- Berichten
- 492
- Lid sinds
- 16 Jaar
Dit heb ik nog nooit gehoort verder.
Je leest wel eens wat over sql injections.
Maar nooit zo veel over het beveiligen van je script,
Waar ook voorbeelden staan.
Wat kan ik nog verder doen om je script veilig te maken?
dan Get beveiligen met html special chars.
altijd quotes gebruiken. Maakt het dan uit of je dubbele of enkele gebruikt?
En wat nog meer?
-
23-05-2009, 22:23 #30
- Berichten
- 571
- Lid sinds
- 17 Jaar
Kun je de vraag over enkele en dubbele quotes iets specifieker uitleggen?
Nog meer... Tja google er eens op zou ik zeg, genoeg stof te vinden.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic