login  Naam:   Wachtwoord: 
Registreer je!
 Forum

magic_quotes

Offline Voldemort - 23/07/2005 10:54 (laatste wijziging 23/07/2005 10:59)
Avatar van VoldemortPHP ver gevorderde Ik heb een aanmeldscript dat checkt of de magic_quotes aanstaat, als dat niet zo is, dan addslashes, anders niet. Maar als ik nu toch een " of ' invul dan zet ie in de DB niet \"\' maar gewoon " '. Zonder " of ' werkt ie wel.

  1. {
  2. //Maak de gegevens op
  3. $gebruikersnaam = $_POST['gebruikersnaam'];
  4. $tr_gebruikersnaam = trim($gebruikersnaam);
  5. $as_gebruikersnaam = addslashes($tr_gebruikersnaam);
  6. $str_gebruikersnaam = strip_tags($as_gebruikersnaam);
  7. $wachtwoord1 = $_POST['wachtwoord1'];
  8. $tr_wachtwoord1 = trim($wachtwoord1);
  9. $as_wachtwoord1 = addslashes($tr_wachtwoord1);
  10. $str_wachtwoord1 = strip_tags($as_wachtwoord1);
  11. $md5_wachtwoord1 = md5($str_wachtwoord1);
  12. $wachtwoord2 = $_POST['wachtwoord2'];
  13. $tr_wachtwoord2 = trim($wachtwoord2);
  14. $as_wachtwoord2 = addslashes($tr_wachtwoord2);
  15. $str_wachtwoord2 = strip_tags($as_wachtwoord2);
  16. $md5_wachtwoord2 = md5($str_wachtwoord2);
  17. $mailadres = $_POST['mailadres'];
  18. $tr_mailadres = trim($mailadres);
  19. $as_mailadres = addslashes($tr_mailadres);
  20. $str_mailadres = strip_tags($as_mailadres);
  21. }
  22. else
  23. {
  24. //Maak de gegevens op
  25. $gebruikersnaam = $_POST['gebruikersnaam'];
  26. $tr_gebruikersnaam = trim($gebruikersnaam);
  27. $str_gebruikersnaam = strip_tags($tr_gebruikersnaam);
  28. $wachtwoord1 = $_POST['wachtwoord1'];
  29. $tr_wachtwoord1 = trim($wachtwoord1);
  30. $str_wachtwoord1 = strip_tags($tr_wachtwoord1);
  31. $md5_wachtwoord1 = md5($str_wachtwoord1);
  32. $wachtwoord2 = $_POST['wachtwoord2'];
  33. $tr_wachtwoord2 = trim($wachtwoord2);
  34. $str_wachtwoord2 = strip_tags($tr_wachtwoord2);
  35. $md5_wachtwoord2 = md5($str_wachtwoord2);
  36. $mailadres = $_POST['mailadres'];
  37. $tr_mailadres = trim($mailadres);
  38. $str_mailadres = strip_tags($tr_mailadres);
  39. }


PS: Op de server staat magic_quotes aan, maar als ik dan van host zou veranderen, en daar staat het uit, dan moet ik superveel scripts veranderen.

12 antwoorden

Gesponsorde links
Offline Thomas - 23/07/2005 11:17
Avatar van Thomas Moderator Het escapen van (dubbele) quotes is juist bedoeld voor het correct inserten van gegevens volgens mij. Als je gegevens uitleest uit je database kun je hier altijd nog addslashes(), of, misschien beter, htmlentities(), over heen halen.

Je zou je natuurlijk ook kunnen afvragen of je zulk soort karakters in de eerste plaats wilt toestaan... Als je dit soort karakters gewoon verbiedt, heb je de bovenstaande problemen ook niet eh ? 
Offline Voldemort - 23/07/2005 11:29 (laatste wijziging 23/07/2005 12:31)
Avatar van Voldemort PHP ver gevorderde Wat doet htmlentities() eigenlijk (die uitleg van php.net is altijd zo ingewikkeld)? Bestaan er mailadressen met een " of ' in?

Waarom doet dit het niet:

  1. if(!empty($str_wachtwoord1) && (ereg("\"", $str_wachtwoord1) || ereg("\'", $str_wachtwoord1)) || !empty($str_wachtwoord2) && (ereg("\"", $str_wachtwoord2) || ereg("\'", $str_wachtwoord2)) || ereg("\"", $str_wachtwoordh) || ereg("\'", $str_wachtwoordh))


Als ik in m'n $str_wachtwoordh een " zet, dan geeft ie meteen weer dat m'n huidige wachtwoord niet met m'n ingevulde klopt (en ik voer deze controle voor de controle die de wachtwoorden vergelijkt)
Offline Ontani - 23/07/2005 12:32
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
htmlentities zet html tags om in special chars
< word &lt;
> word &gt;
enz...
Offline Voldemort - 23/07/2005 12:33
Avatar van Voldemort PHP ver gevorderde Dat doet htmlspecialchars toch ook? Dan zijn die 2 toch gelijk?
Offline Ontani - 23/07/2005 12:37 (laatste wijziging 23/07/2005 12:37)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
ja ongeveer:

  1. <?php
  2. $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
  3. echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
  4. ?>

vervangt alles ook ",& en '

  1. <?php
  2. $str = "A 'quote' is <b>bold</b>";
  3.  
  4. // Outputs: A 'quote' is &lt;b&gt;bold&lt;/b&gt;
  5.  
  6. // Outputs: A &#039;quote&#039; is &lt;b&gt;bold&lt;/b&gt;
  7. echo htmlentities($str, ENT_QUOTES);
  8. ?>


2e voorbeeld vervangt ook nog je quotes omdat je de extra var ENT_QUOTES meegeeft.
Offline Voldemort - 23/07/2005 16:40
Avatar van Voldemort PHP ver gevorderde Nu werkt het, alleen is er een klein probleem. Bij het aanmelden, dan wordt er een mail gestuurd met je gebruikersnaam en wachtwoord. Ik haal de gebruikersnaam uit de DB en het wachtwoord uit het formulier (omdat het anders MD5 is). Alleen nu krijg ik in m'n wachtwoord ipv " ' &quot;&#039;

Hoe komt dat? Hoe kan ik dat vermijden?
Offline Rens - 23/07/2005 16:43
Avatar van Rens Gouden medaille

Crew algemeen
Zorgen dat je HTML word geaccepteerd in de email.

http://www.site...44#headers
De eerste 2 headers, mime-version en Content-type, die moet je erbij zetten.
Dan word &quot;&#039; weergeven als " '
Offline Voldemort - 23/07/2005 16:56
Avatar van Voldemort PHP ver gevorderde Ok, nu werkt het.

Even over XSS en MySQL injection, ik las een artikel waar men zegt, addslashes gebruiken, maar nu hoef ik nergens addslashes te gebruiken als ik htmlentities. Die doet men ' en " toch naar andere tekens? Ben ik hierdoor genoeg beveiligd?
Offline Rens - 23/07/2005 17:01
Avatar van Rens Gouden medaille

Crew algemeen
&quot; kun je gerust in je database zetten.
Het is namelijk een HTML code voor ".
Dus je leid hier geen gevaar mee (dacht ik zo).
Je kunt het natuurlijk altijd zelf uittesten op je tabel, beter dat jij het uittest als dat iemand anders het gebruikt en het blijkt niet zo veilig te zijn als we denken...
Offline Voldemort - 23/07/2005 17:05
Avatar van Voldemort PHP ver gevorderde Hoe kan ik nu testen als ik niet kan hacken, maar je zegt dat het veilig is htmlentities, dus addslashes zal niet meer nodig zijn? Of toch wel nog?
Offline Rens - 23/07/2005 17:07
Avatar van Rens Gouden medaille

Crew algemeen
Het lijkt mij veilig zo, met &quot;.
Maar dan wel met ENT_QUOTES erbij.
Dat doet eigenlijk hetzelfde als addslashes(htmlentities($waarde));
Offline Voldemort - 23/07/2005 17:09
Avatar van Voldemort PHP ver gevorderde Ok, ik ben blij dat ik nu van die slashes (en ook addslashes en stripslashes) af ben, dat is soms zo verwarrend, en dan die instelling van magic_quotes_gpc. Die is veel handiger. Ze zouden addslashes en stripslashes moeten afschaffen .
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.218s