web-dev-qa-db-fra.com

Sanitize_text_field () est-il suffisant pour enregistrer dans la base de données?

Alors voilà la situation. Nous autorisons les utilisateurs à saisir des données d’entrée, c’est-à-dire user_first_name et user_additional_comments. Ensuite, nous utilisons sanitize_text_field (), nommé en tant que sauvegarde.

Mais après ce filtre:

Thomas' OR SELECT * FROM wp_user

Est toujours sauvegardé dans DATABASE en texte intégral. Et ' caractère n'est pas échappé en tant que ' ou \'.

J'utilise $wpdb->query("INSERT INTO A (a,b,c) VALUES ('{$a}', '{$b}', '{$c}')"); Donc $ a doit être une valeur valide ici, qui peut être insérée dans db. J'ai des raisons de ne pas utiliser les fonctions spécifiques insert (), prepare () etc., je dois donc être sûr que $ a est valide et sécurisé. Comment s'assurer que pour les données de texte comme le nom de famille ou un commentaire.

Alors est-ce que ça brise la sécurité?

4
KestutisIT

Vous pouvez utiliser wpdb insert function. C'est mieux à tous points de vue.

Il peut se soucier que les données s'échappent et elles sont plus courtes.

Vous pouvez quand même utiliser votre propre requête, mais je recommanderais cet article pour lire https://codex.wordpress.org/Data_Validation#Database

5
user94212