[PHP] automatisch addslashes?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Ik heb een scriptje gemaakt waarmee je plaatjes kunt uploaden, die in een directory gezet wordt die aangemaakt wordt als je gaat uploaden. Deze heeft de naam die ingevuld is in een veld in het formulier. Als je hier nu een apostrof ' in zet, voegt ie er automatisch een slash aan toe? Ik gebruik addslashes() dus niet... Ik wil dat als ik als directorynaam "naam'bla" opgeef.. het ook gewoon naam'bla wordt, en niet naam\'bla.... iemand enig idee waar dit aan ligt, en hoe ik het kan verhelpen?

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.


Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
stripslashes :?

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
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? :?

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.


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Linux escaped deze automatisch om het verschil tussen bijvoorbeeld
code:
1
rm Dit is een file

en
code:
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


Acties:
  • 0 Henk 'm!

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Waarom escaped 'ie die dan? :? Dan zou je als je rm dit\ is\ bla toch juist alle files verwijderen? :? En wat kan ik er aan doen?

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.


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Omdat een apostrophe een andere betekenis heeft in de linux console. (vraag even niet welke :X ) Net zoals de spatie moet er een onderscheid gemaakt worden tussen een commando of een string. Een spatie en een apostrophe (plus nog een aantal characters) zijn altijd commandos tenzij deze geescaped worden.

---
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


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

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? :?
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.

[ Voor 6% gewijzigd door crisp op 27-04-2003 15:11 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
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.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

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.
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).
In de ini-dist staat magic quotes default ON, in de ini-recommended op OFF

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Magic Quote is juist 'verzonnen' omdat het niet gebruiken van addslashes en stripslashes ontzettende security-issues met zich meebrengt.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Captain N
  • Registratie: Maart 2001
  • Laatst online: 10-05-2024

Captain N

Back in NL. T_T

Topicstarter
Mja, ben er inmiddels uit door een beetje te klooien met stripslashes. Maar is wel flink verwarrend dat het de ene keer wel moet, en dan weer niet. Maar goed... het werkt :)

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.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
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.
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.
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.
Ah, inderdaad ja. Maar dat maakt het er allemaal niet simpeler op.

Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 18-09 14:45
Ik gebruik zelf deze functie om slashes toe te voegen aan een string als dat nodig is voor bv een database:

PHP:
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:

PHP:
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...
Pagina: 1