add preg_quote_replacement() function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- C
- Sterne
- 40.4k
- Forks
- 8.1k
- Ø Merge
- 2 T. 13 Std.
- Gemergte PRs (30 T.)
- 96
Beschreibung
Description
$pattern = '/[[name]]/';
$template = 'My name is [[name]]';
preg_replace($pattern, $_POST['name'], $template);
This is prone to injection of any match from the pattern if user supplies for example Tomas$1Fejfar. There is a preg_quote function that can be used to escape special chars in template. There should be same function that would escape the replacement.
preg_quote_replacement($_POST['name']); // Tomas\$1Fejfar
IMHO it is enough to escape backslash and dollars with backslash, but I am not sure.
Currently the replacement must be escaped using userland function that makes it prone to mistakes.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Das Issue nennt preg_quote() und preg_replace(), enthält aber keine Dateien oder Tests. Beginne damit, ihre Implementierung und das Parsen von Ersetzungen nachzuverfolgen, und überprüfe anschließend die vorgeschlagene Behandlung von Backslashes und Dollarzeichen anhand des gezeigten Injection-Falls. Als erledigt gilt die Definition des Escaping-Vertrags, die Implementierung der neuen Funktion und das Hinzufügen von Tests für Ersetzungsstrings wie Tomas$1Fejfar.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- php
- Bereich
- backend
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 30/100