abonnement Unibet Coolblue Bitvavo
pi_46344267
quote:
Op donderdag 15 februari 2007 19:39 schreef Swetsenegger het volgende:

[..]

mysql_real_escape_string
En $id hoeft waarschijnlijk niet in tussen enkele quotes, want zal een integer bevatten en je variabelen buiten quotes plaatsen
[ code verwijderd ]
Toch zou ik $_GET['id'] ff met is_numeric checken, in case of
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 15 februari 2007 @ 20:44:20 #177
12880 CraZaay
prettig gestoord
pi_46344452
quote:
Op donderdag 15 februari 2007 20:38 schreef Chandler het volgende:
Minivraag

met dit maak ik van een string een array
[ code verwijderd ]

echter krijg ik dan
[ code verwijderd ]

maar eingelijk wil ik $font['Arial'] = "Arial" etc.

Weet iemand hoe ik dat simpel kan realiseren
explode() en dan array_flip()? En anders even verder kijken dan je neus lang is en http://nl2.php.net/manual/en/ref.array.php eens lezen
pi_46344885
CraZaay, array_flip draait gegevens om... maar ik wil niet omdraaien, ik wil dat alle items in deze array dezelfde 'id' als value krijgen.. maar goed, dan maar een paar regels meer

1
2
3
4
5
$fnt = explode(",", FONTS);
    foreach ($fnt as $null => $font)
    {
        $fontArr[$font] = $font;
    }


en heb die doc op php.net natuurlijk gelezen voordat ik hier ging posten
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 15 februari 2007 @ 21:01:07 #179
12221 Tijn
Powered by MS Paint
pi_46345066
Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
  FOK!-Schrikkelbaas donderdag 15 februari 2007 @ 21:03:34 #180
1972 Swetsenegger
Egocentrische Narcist
pi_46345164
quote:
Op donderdag 15 februari 2007 20:39 schreef Chandler het volgende:

[..]

Toch zou ik $_GET['id'] ff met is_numeric checken, in case of
Die discussie is nu al 500 keer gevoerd en het algemene standpunt daarin is ALTIJD USER INPUT CONTROLEREN en dat standpunt blijf ik niet herhalen.

Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
  donderdag 15 februari 2007 @ 21:19:26 #181
12880 CraZaay
prettig gestoord
pi_46345767
quote:
Op donderdag 15 februari 2007 21:01 schreef Tijn het volgende:
Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
Dat heeft inderdaad geen enkel nut
  donderdag 15 februari 2007 @ 21:20:23 #182
12880 CraZaay
prettig gestoord
pi_46345795
quote:
Op donderdag 15 februari 2007 21:03 schreef Swetsenegger het volgende:

Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
Maar aangezien die er volgens mij geen quotes omheen zet, moet je wel heel zeker weten dat het een integer is.
pi_46346894
quote:
Op donderdag 15 februari 2007 21:03 schreef Swetsenegger het volgende:

Uiteraard ga je met is_numeric controleren, hoewel de grotste angel er met mysql_real_escape_STRING AL WEL UIT IS.
Waarom zou je een integer gaan behandelen als een string?

Als ie de is_numeric passed betekend het toch dat je deze data kan gebruiken voor je SQL query. Al dan niet met een single quote char eromheen.

mysql_real_escape_string lijkt me voor strings alleen, niet voor een integer.
  FOK!-Schrikkelbaas donderdag 15 februari 2007 @ 22:17:48 #184
1972 Swetsenegger
Egocentrische Narcist
pi_46348273
quote:
Op donderdag 15 februari 2007 21:45 schreef slakkie het volgende:

[..]

Waarom zou je een integer gaan behandelen als een string?

Als ie de is_numeric passed betekend het toch dat je deze data kan gebruiken voor je SQL query. Al dan niet met een single quote char eromheen.

mysql_real_escape_string lijkt me voor strings alleen, niet voor een integer.
mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
  donderdag 15 februari 2007 @ 23:11:38 #185
12880 CraZaay
prettig gestoord
pi_46350519
quote:
Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

[..]

mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
Nee, dat kan er dus niet in staan als is_numeric() true is
pi_46351408
quote:
Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

[..]

mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
Op zich is het ook een nadeel van mysql dat strings in een numeriek veld kunnen worden geplaatst.
pi_46351436
quote:
Op dinsdag 13 februari 2007 08:50 schreef Xcalibur het volgende:
voor alle regex mensen hier: weet iemand vanaf welke Linux / PHP versie de regex ook special characters kan matchen (ė / ą / etc.). Ik had een Windows server met PHP 4.3.11 waar het werkte, maar nu ben ik over naar een Linux server met PHP 4.3.11, en daar werkt het niet

Het gaat dus om regexen als: P{M} enzo

Edit: ik krijg dus deze error: "Warning: preg_match(): Compilation failed: PCRE does not support L, l, N, P, p, U, u, or X"
niemand die hier nog wat zinnigs over te zeggen heeft?
pi_46351509
quote:
Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:

mysql_real_escape_string slasht quotes en voorkomt derhalve sqlinjection. Ook integers als string behandelen is een goed idee, als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
Ik volg je niet echt..

Ik zie de gehele reden voor de mysql_real_escape_string niet. Het is een integer, geen string. En zelfs al is het een string, dan heb je die mysql_real_escape_string niet nodig. Een input van '9 moet ie er zoiezo uitfilteren en op barfen, daar hoef je niet nog eens een \'9 van te maken. Dit is immers geen int.

Ik zat ff te spelen met verschillende manier om te checken of iets een int is.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
$array 
= array (
  
9,
  
'9',
  
"9",
  
"9.9",
  
"9,9",
  
"hello9",
  
"hello world",
  
"-9.0",
  
"+99.0",
  
"-9",
  
"+9",
  
"'+9'",
  
"9.000001",
);


foreach (
$array as $id) {

  echo 
"$id\n";

  if (
is_numeric($id) && (!is_float($id) && !is_string($id))) {
    echo 
"is_nummeric and not float and not string\n";
  }

  if (
ctype_digit($id)) {
    echo 
"Is ctype_digit\n";
  }

  
# -9.000 -9.0 -9 en zelfde voor + maar mag ook zonder ;)
  
if (preg_match('/^[-+]?\s*d+([.,]0+)?\s*$/'$id)) {
    echo 
"Is int - regexp\n";
  }
  echo 
"\n";
?>


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
9
is_nummeric and not float and not string
Is int - regexp

9
Is ctype_digit
Is int - regexp

9
Is ctype_digit
Is int - regexp

9.9

9,9

hello9

hello world

-9.0
Is int - regexp

+99.0
Is int - regexp

-9
Is int - regexp

+9
Is int - regexp

'+9'

9.000001


Zoals je kan zien, heb ik die hele mysql_real_escape_string niet nodig. Die is_numeric is mij te los qua wat ie als integer zit, ik zou hem iig daarvoor nooit gebruiken. Ik zou dus altijd met een regexp checken of het een integer is.

Wellicht dat intval() ook nog gebruikt kan worden, ik heb ermee getest, maar die vind 9.9 ook een int, en daar ben ik het niet mee eens, dat is een double/float, en valt dus buiten de boot.
pi_46357065
Als ik met SQL queries werk, gebruik ik gewoon intval() voor integers en mysql_real_escape_string() voor strings.
pi_46358195
quote:
Op donderdag 15 februari 2007 21:01 schreef Tijn het volgende:
Waarom zou je willen dat de key hetzelfde is als de value? Wat is dan nog het nut van ze beiden opslaan?
Zie quote CraZaay
quote:
Op donderdag 15 februari 2007 21:19 schreef CraZaay het volgende:
Dat heeft inderdaad geen enkel nut
Geheel fout!

Mijn eigen geschreven parser werkt met values, in een database heb ik een veld waarin ik de naam van het font bewaar. dus niet een ID maar de NAAM!. Mijn parser kan on the fly een option select list maken van een array en tevens de 'geselecteerde' optie selectere aan de hand van de 'ID!' maar in dit geval is het dus geen id maar een 'variabel!'

dus enigzinds onzinnig om een antwoord te geven op iets waarvan jullie nog niet weten waarvoor het gebruikt is / gaat worden
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 16 februari 2007 @ 17:08:45 #191
37634 wobbel
Da WoBBeL King
pi_46372804
Is er een bug in PHP 4.3.9 ofzo? (jaja, oude versie ik weet maar ze willen nietu pdaten in de productie omgeving )

Als ik dit script heb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
session_start 
( );

$_SESSION['SettleLand'] = 1;

echo 
$_SESSION['SettleLand']; // 1 in dit geval

if ( $_SESSION['SettleLand'] == )
{

    
$SettleLand "Nederland"

}
elseif
{

    
$SettleLand "Belgiieeuuuuh";

}

echo 
$SettleLand// Nederland in dit geval
echo $_SESSION['SettleLand']; // is ook veranderd in Nederland en niet meer 1 !!!
?>


Als ik $SettleLand zou renamen naar $HeleAndereVariable dan is 't probleem opgelost, maar in PHP 5.2.0 bestaat dit probleem niet namelijk....en in de changelogs kan ik (zo gauw) niks vinden.
pi_46373042
Controleer je php.ini eens of register_globals aan staat, die moet uitstaan en in php5 kun je die geloof ik niet eens meer aanzetten, dus dat zou het verklaren.

register_globals zorgt ervoor dat je een global (session is dit geval) kunt gebruiken alsof het een normaal variable is, dus hij maakt van $_SESSION['SettleLand'] autoatisch al $SettleLand, en die is inderdaad "Nederland" geworden in jou script. Overigens raar dat $_SESSION['SettleLand'] ook nederland wordt maar vooruit, zal de andere kant ook wel zo op werken.
-
  vrijdag 16 februari 2007 @ 17:17:12 #193
37634 wobbel
Da WoBBeL King
pi_46373065
quote:
Op vrijdag 16 februari 2007 17:16 schreef splendor het volgende:
Controleer je php.ini eens of register_globals aan staat, die moet uitstaan en in php5 kun je die geloof ik niet eens meer aanzetten, dus dat zou het verklaren.

register_globals zorgt ervoor dat je een global (session is dit geval) kunt gebruiken alsof het een normaal variable is, dus hij maakt van $_SESSION['SettleLand'] autoatisch al $SettleLand, en die is inderdaad "Nederland" geworden in jou script. Overigens raar dat $_SESSION['SettleLand'] ook nederland wordt maar vooruit, zal de andere kant ook wel zo op werken.
Verbaasde mij ook, want dit vond ik echt wel heel strange

register_globals = On

[ Bericht 3% gewijzigd door wobbel op 16-02-2007 17:27:11 (poep in m\'n hoofd) ]
pi_46375294
register_globals staat aan in een productieomgeving?
da's wel heel slecht...
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 18:52:42 #195
1972 Swetsenegger
Egocentrische Narcist
pi_46375870
quote:
Op donderdag 15 februari 2007 23:31 schreef slakkie het volgende:

[..]

Ik volg je niet echt..

Ik zie de gehele reden voor de mysql_real_escape_string niet. Het is een integer, geen string. En zelfs al is het een string, dan heb je die mysql_real_escape_string niet nodig. Een input van '9 moet ie er zoiezo uitfilteren en op barfen, daar hoef je niet nog eens een \'9 van te maken. Dit is immers geen int.

Ik zat ff te spelen met verschillende manier om te checken of iets een int is.
[ code verwijderd ]


[ code verwijderd ]

Zoals je kan zien, heb ik die hele mysql_real_escape_string niet nodig. Die is_numeric is mij te los qua wat ie als integer zit, ik zou hem iig daarvoor nooit gebruiken. Ik zou dus altijd met een regexp checken of het een integer is.

Wellicht dat intval() ook nog gebruikt kan worden, ik heb ermee getest, maar die vind 9.9 ook een int, en daar ben ik het niet mee eens, dat is een double/float, en valt dus buiten de boot.
Je gaat er maar vanuit dat je daadwerkelijk de userinput controleert. Zowel mysql als php zijn zo inconsistent als de tyfus met strings en integers, dus is 1 fuck-up voldoende om sql injection toe te staan.

Ik begrijp jouw weerstand niet tegen een extra safety maatregel als mysql_real_escape_string. Zeker niet in toepassingen zoals de meeste hier maken waar performance geen groot issue is. Want eigenlijk is dat de enige reden die ik kan bedenken voor je aversie tegen een failback systeem

Naast natuurlijk het feit dat je simpelweg userinput moet controleren.
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 18:53:56 #196
1972 Swetsenegger
Egocentrische Narcist
pi_46375905
quote:
Op donderdag 15 februari 2007 23:11 schreef CraZaay het volgende:

[..]

Nee, dat kan er dus niet in staan als is_numeric() true is
quote:
Op donderdag 15 februari 2007 22:17 schreef Swetsenegger het volgende:
als je eens een keer slipt met je userinput controlle zou er wel eens een 'tje in je 'integer' kunnen staan.
pi_46376460
Is het misschien iets om voor iedereen hier een functie te schrijven die veilig met $_GET's omgaat?

Ik wil wel een begin geven door mijn voorlopige functie hier neer te zetten, kan iemand anders hem uitbreiden en er over discussiėren tot we een goeie hebben. :)

1
2
3
4
function filterGET($getValue) {
   $getValue = trim(htmlspecialchars($getValue));
   return $getValue;
}


Misschien een idee dat je aangeeft of het een int, string of beide moet/mag zijn en dat ie daar dan ook op controleert.
-
  FOK!-Schrikkelbaas vrijdag 16 februari 2007 @ 20:08:02 #198
1972 Swetsenegger
Egocentrische Narcist
pi_46378534
quote:
Op vrijdag 16 februari 2007 19:10 schreef splendor het volgende:
Is het misschien iets om voor iedereen hier een functie te schrijven die veilig met $_GET's omgaat?

Ik wil wel een begin geven door mijn voorlopige functie hier neer te zetten, kan iemand anders hem uitbreiden en er over discussiėren tot we een goeie hebben.
[ code verwijderd ]

Misschien een idee dat je aangeeft of het een int, string of beide moet/mag zijn en dat ie daar dan ook op controleert.
[php/mysql] SQL Injection, Maqic Quotes genoeg?
http://www.phpfreakz.nl/artikelen.php?aid=106

[ Bericht 8% gewijzigd door Swetsenegger op 16-02-2007 20:13:15 ]
  vrijdag 16 februari 2007 @ 20:12:31 #199
159979 G.Fawkes
Libera eas de ore leonis!
pi_46378701
Ik heb vandaag jinzora installeerd op mijn ubuntu server en hij doet het redelijk. twee foutmeldingen blijven verschijnen:

1
2
3
4
5
Warning: fopen(/var/www/mp3/temp/cache/ac00233293befcafae03b4e82ac8f134.html) [function.fopen]: failed to open stream: Permission denied in /var/www/mp3/frontend/display.php on line 138

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 139

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 140


en

1
2
3
4
5
Warning: fopen(/var/www/mp3/temp/cache/e6420d249144468d93a38591f933734d.html) [function.fopen]: failed to open stream: Permission denied in /var/www/mp3/frontend/display.php on line 138

Warning: fwrite(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 139

Warning: fclose(): supplied argument is not a valid stream resource in /var/www/mp3/frontend/display.php on line 140


Is er een bepaalde app die ik nog zou moeten installeren of dergelijke want hij zegt wel permission denied, maar chmod staat iig goed...
pi_46380027
-- edit: werkte wel, tiep fout --
The people who lost my respect will never get a capital letter for their name again.
Like trump...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')