Avatar billede Slettet bruger
18. maj 2006 - 13:38 Der er 7 kommentarer og
1 løsning

hvornår bruger i den real_escape_string()

Efter jeg har forstået bruger man mysql_real_escape_String() når der skal gemmes noget tekst i databasen

Det er vel ikke nødvendigt hvis det felt der skal gemmmes i er integer...er det

Det er vel heller ikke nødvendigt hvis det tekst der skal inputtes i tabellen er noget teks som php-scriptet har lavet eller hentet fra en tabel vel??

altså det er vel kun når folk inputter noget tekst i en form og dette skal gemmes i database ik??
Avatar billede Slettet bruger
18. maj 2006 - 14:48 #1
en ting mere
Hvis man bruger mysql_real_escape_string() og magic_quotes er slået til bliver den så double backslashed eller tager magic højde for at det er gjort??
Avatar billede showsource Seniormester
19. maj 2006 - 05:53 #2
http://dk2.php.net/manual/da/function.mysql-real-escape-string.php

Er selv begyndt ALTID at bruge,

function safe_query($var) {

    if(get_magic_quotes_gpc()) {
    $var = stripslashes($var);
    }

    if(!is_numeric($var)) {
    $var = "'". mysql_real_escape_string($var) ."'";
    }

    return $var;
}

Men er det f.eks. et tal fra url som skal bruges i en query, bruger jeg så ALTID intval()
$sql = mysql_query("SELECT * FROM `tabel` WHERE `id` = ". intval($_GET["nr"]) ."") or die (mysql_error());

Men umiddelbart. så er der ingen grund til IKKE altid at sikre sin query.
Så ved du, at du gør det rigtigt hver gang
Avatar billede Slettet bruger
19. maj 2006 - 10:44 #3
skal alt der bruges i en query der kommer med GET eller POST sikres?

altså både hvis det er noget der skal bruges i queryen ved WHERE pg hvis det er noget der skal indsættes eller updates??

Er der andre situationer end GET og POST hvor man skal bruge mysql_real_query()?
Avatar billede morhan Novice
20. maj 2006 - 17:00 #4
Hvis brugeren på nogen måde kan komme i nærheden af at påvirke de data som du behandler på serveren, så skal du validere. Så alt fra GET, POST, COOKIE etc skal sikres

Også de mere skjulte data fra klienten skal sikres, f.eks. $_SERVER['HTTP_USER_AGENT'] som angiver hvilken browser brugeren benytter. Hvis et php script hiver denne oplysning ud og gemmer i en database, så kan brugeren, uden validering på serveren, injekte sql kommandoer i sin user agent streng
Avatar billede showsource Seniormester
20. maj 2006 - 17:06 #5
nåhh, skulle lige til at skrive noget lign.... :O)

Så længe du IKKE kan forvente brugerinput i dine forespørgsler, gør det ikke noget at lade være, da du jo selv har kontrol over query.

Har hørt at f.eks. $_SERVER["HTTP_REFERER"] også skal skulle være nem at selv bestemme indholdet af.
Avatar billede Slettet bruger
20. maj 2006 - 17:27 #6
Hey morhan
Jeg bruger nu mysql_real_escape_string() på stort set alt jeg indsætter i databasen og hvis jeg bruger brugerens input i en "where" sætning.

Nu siger du "validere". Hvoran mener du. Skal jeg gøre andet end bruge mysql_real_escape_string().

Hvis jeg fx forventer en int skal jeg så checke om det er en int?
Hvis jeg forventer en email skal jeg så checke om det er en email?
Hvis jeg forventer en gang fri tekst der skal insættes...ja det kan man vel ikke validere?

Er det nok bare at bruge mysql_real_escape_String() alt eller gør du andet??
Avatar billede Slettet bruger
01. juni 2006 - 13:00 #7

vi skal have lukket denne her læg nogle svar
Avatar billede Slettet bruger
06. august 2006 - 18:28 #8
ingen svare så jeg tar dem
undskyld
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester