Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.
Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.
1
| rm Dit is een file |
en
1
| rm Dit\ is\ een\ file |
te herkennen. De 1e verwijderd 4 bestanden en de 2e slechts 1
---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate
Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate
Bij het schrijven naar je database wordt de slash gestript, vandaar dat bij het uitlezen er geen slash meer voorstaat. Als je echter direct een POST/GET/COOKIE waarde weer weg wil schrijven in een input of er iets anders mee wilt doen dan moet je expliciet een stripslashes doen als magic quotes aanstaat.www.Goku.nl schreef op 27 April 2003 @ 14:02:
Thanks, maar het rare is... die naam van voeg ik ook toe aan m'n database, en daar wordt er geen slash toegevoegd... alleen bij het maken van die directory?
[ Voor 6% gewijzigd door crisp op 27-04-2003 15:11 ]
Intentionally left blank
De reden dat je de slashes wel in je directorynaam tegenkomt en niet in je database, is dat de database die slashes stript en de functie waarmee je directories aanmaakt niet.
Het is wel portable te maken door get_magic_quotes_gpc te gebruiken en aan de hand daarvan addslashes of stripslashes te doen. Echter heb je dan ook nog eens magic_quotes_runtime en magic_quotes_sybase die roet in het eten kunnen gooien (hoe dat precies zit weet ik ook zo 1 2 3 even niet meer).Soultaker schreef op 27 April 2003 @ 15:40:
Ontzettend stomme feature, die magic quotes, of dan tenminste het feit dat je 'm zelf aan of uit kunt zetten. Je PHP code is daarmee namelijk niet meer portable tussen servers. Het is niet eens zo dat je de keuze hebt om portable code te schrijven, door gewoon niet van de feature gebruik te maken (zoals met veel features wel kan). Al met al is het misschien het beste om die magic quotes uit te zetten (wat ze by default ook zijn, geloof ik?) in de php-configuratie of via een htaccess-file.
De reden dat je de slashes wel in je directorynaam tegenkomt en niet in je database, is dat de database die slashes stript en de functie waarmee je directories aanmaakt niet.
In de ini-dist staat magic quotes default ON, in de ini-recommended op OFF
Intentionally left blank
Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info
Specs: NES | M82 | (T)FC | SNES | BS-X | VB | N64 | 64DD | NGC | Q | Q GBP | G&Ws | GB(L) | GB(A) (SP) | GBM | DS(L) | Wii
Mijn foto's op Flickr.
Ok, maar zeg dan dat het een feature van PHP is en dat 'ie altijd aanstaat. Nu kun je scripts maken die op het ene systeem perfect veilig zijn en op het andere niet. Dat is pas een security issue.Grijze Vos schreef op 27 April 2003 @ 16:09:
Magic Quote is juist 'verzonnen' omdat het niet gebruiken van addslashes en stripslashes ontzettende security-issues met zich meebrengt.
Ah, inderdaad ja. Maar dat maakt het er allemaal niet simpeler op.crisp schreef op 27 April 2003 @ 15:45:
Het is wel portable te maken door get_magic_quotes_gpc te gebruiken en aan de hand daarvan addslashes of stripslashes te doen.
1
2
3
4
5
6
7
8
| function safe_addslashes($str) { if(ini_get('magic_quotes_sybase') === 1) { $str = str_replace('\'\'', '\'', $str); return addslashes($str); } //Sybase style magic quotes else if(get_magic_quotes_gpc() || get_magic_quotes_runtime()) { return $str; } //Magic Quotes have already added backslashes else { return addslashes($str); } //No Magic Quotes: add backslashes } |
Deze functie kun je vrij eenvoudig transformeren naar een "safe_stripslashes" variant:
1
2
3
4
5
6
7
8
| function safe_stripslashes($str) { if(ini_get('magic_quotes_sybase') === 1) { $str = str_replace('\'\'', '\'', $str); return $str; } //Sybase style magic quotes removed else if(get_magic_quotes_gpc() || get_magic_quotes_runtime()) { return stripslashes($str); } //Magic Quotes have already added backslashes, strip them else { return $str; } //No Magic Quotes: do nothing } |
Deze functies zijn natuurlijk alleen bedoeld voor GPC data (want magic quotes werken alleen daarop) en niet voor data uit bijvoorbeeld en file.
Wat mij betreft is magic_quotes de grootste pain in the ass van PHP, ik hoop dat ze de feature er in de toekomst uitlaten. Mocht iemand effiecientere oplossingen weten dan deze dan hoor ik dat graag...