2016-03-25 9 views
2

Ich wurde konsultiert, um mit einer gehackten Datenbank zu helfen, die viel Link-Injektion in Tausenden von Zeilen hatte.Mysql suchen und entfernen mit Regex

Das Grundformat der Link Injektion erscheint immer wie folgt zu sein:

<a href="http://SOME-RANDOM-LINK-HERE.com/" style="text-decoration:none;color:#676c6c">SOME RANDOM TEXT HERE</a> 

Im Grunde muss ich alles eine Tags löschen, die einen Stil-Attribut text-decoration:none;color:#676c6c

Ich suche den schnellsten enthalten Lösung. Ob es sich um reguläre Ausdrücke oder etwas anderes handelt, jede Anleitung wird sehr geschätzt. Vielen Dank!

+1

Bitte geben Sie ein Beispiel für genau das, was Sie löschen möchten. –

+0

Warum nicht einen HTML-Parser verwenden und über Elemente iterieren, wobei diejenigen entfernt werden, die nicht wünschenswert sind? Dies mit einem regulären Ausdruck zu tun, führt normalerweise zu sehr schlechten Ergebnissen. Dies ist besser in einer Skriptsprache wie PHP als in MySQL direkt getan. – tadman

+0

Warum nicht einfach vom Backup wiederherstellen? Sie sollten die Anwendung und die Datenbank als kompromittiert betrachten, von der Sicherung wiederherstellen und dann patchen. – Sammitch

Antwort

2

Sie können mit dieser Regex nach injizierten Links suchen.

Regex:<a .*? style="text-decoration:none;color:#676c6c".*?>.*?<\/a>

Das für <a></a> mit style="text-decoration:none;color:#676c6c" aussehen wird. Dies wird andere Links nicht berühren.

Regex101 Demo

Sie sollten auch diese überprüfen answer, wie in MySql ersetzen.