Mes Magic_Quotes ont toujours été allumées et seulement aujourd'hui j'ai vu que ça devenait déprécié. Si je l'ai éteint, puis-je simplement échapper à toutes les entrées de l'utilisateur (que ce soit utilisé dans ma base de données ou non). Je ne peux définitivement pas revenir en arrière et réécrire toutes mes requêtes de base de données pour utiliser mysql_real_escape_string(). Puis-je simplement parcourir tous mes $ _GET, $ _POST et $ _SESSION et appliquer mysql_real_escape_string()?PHP Magic Quotes quick fix
Répondre
mysql_real_escape_string
et magic_quotes_gpc
sont deux choses différentes. Les guillemets magiques ne rendent pas votre entrée suffisamment sûre pour les requêtes SQL.
Si vous le souhaitez ou non, devrait convertir toutes vos requêtes de base de données pour utiliser un mécanisme d'échappement approprié, ou laisser votre application ouverte à des problèmes de sécurité comme l'injection SQL. Vous ne pouvez pas vraiment appliquer mysql_real_escape_string
directement sur $ _GET, $ _POST, etc. car cela pourrait gâcher vos données d'entrée si vous en avez besoin pour autre chose que SQL (comme la validation de formulaire et autres).
Dans mon cas, il serait probablement plus facile de réparer les choses que ça gâche plutôt que de revenir en arrière et recoder des milliers de requêtes. – Juddling
Comment saurez-vous ce qui est cassé? La seule solution sûre a toujours été de s'assurer que chaque requête est correctement échappée. – Hamish
Éteignez-le. La douleur du recodage à la main, au cas par cas, pâlit par rapport à l'agonie d'être piraté.
Oui, vous pouvez, mais n'oubliez pas que vous pouvez également envoyer des tableaux via GPC. ?var[1]=data
. Il est à noter que magic_quotes_gpc a été retiré pour une bonne raison et je parie beaucoup de bières que votre application est très vulnérable à l'injection SQL.
if (!get_magic_quotes_gpc()) {
function my_escape(&$value, $key) {$value = mysql_real_escape_string($value);}
$gpc = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
array_walk_recursive($gpc, 'my_escape');
}
Il peut ne pas être approprié d'échapper tous les globals pour l'utilisation de MySQL. – stillstanding
@stillstanding yep, et il n'arrêtera pas toute l'injection sql. – rook
Pourquoi ne stopperait-il pas une attaque? – Juddling
C'est la méthode que je l'utilise. Si vous utilisez un changement de méthode de cas, connectez simplement le fichier index.php. deuxième méthode, vous devez ajouter à chaque page.
- index.php? Page = accueil
- index.php? Page = deux ...
DEUXIÈME CODE ADD MÉTHODE PAR PAGE
- inde x.php
- contact.php
- product.php ....
Recommandé: simple page requête cas/commutateur
// Magic Quotes Fix
if (ini_get('magic_quotes_gpc')) {
function clean($data) {
if (is_array($data)) {
foreach ($data as $key => $value) {
$data[clean($key)] = clean($value);
}
} else {
$data = stripslashes($data);
}
return $data;
}
$_GET = clean($_GET);
$_POST = clean($_POST);
$_REQUEST = clean($_REQUEST);
$_COOKIE = clean($_COOKIE);
}
- 1. PHP - Shorter Magic Quotes Solution
- 2. Injection SQL réussie malgré PHP Magic Quotes
- 3. Magic quotes sur les anciennes versions et nouvelles de PHP
- 4. Num Rows toujours = 1 pour une raison quelconque. QUICK FIX
- 5. PHP Pretty Quotes
- 6. mime magic php enable
- 7. Fix Divs inégales avec php
- 8. Constantes "Magic" en C# comme PHP a?
- 9. Magic Exceptionnel
- 10. MySQL Quick Bulk Inserts
- 11. PHP: Escape Quotes SEULEMENT en dehors des balises HTML (Regex)
- 12. Quick ModRewrite et GET question
- 13. Comment fonctionne Google In Quotes?
- 14. Django Double Escaping Quotes etc
- 15. C++ quick sort time
- 16. Quick Rhinomocks Aide
- 17. C++ template black magic
- 18. Quick Object Architecture question
- 19. C# Magic Wand Outil
- 20. Programme Magic Square (C++)
- 21. Quick javascript split question
- 22. fix cassés caractères allemands
- 23. alerte Timer - FIX
- 24. Fix 4.2 Question
- 25. fix accordéon (jquery)
- 26. Obtenir un pixel avec MagiC++
- 27. Cordes Asp.net MVC Magic - éliminer
- 28. Tutoriel Quick Flex et Java
- 29. Cufon et Jquery Magic Preview
- 30. Écran GNU: programmer-quotes `` dans Readbuf?
Juste pour que vous savez "dépréciée" et " déprécié "sont deux choses différentes. :) –
Je pense qu'il devrait plutôt être "Je ne * veux certainement pas * revenir en arrière et réécrire toutes mes requêtes de base de données". – Gumbo