php / php/php-src

add preg_quote_replacement() function

Aperta
#9,663 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Extension: pcre Feature Status: Needs Triage
Lingua principale
C
Stelle
40.4k
Fork
8.1k
Merge medio
2g 13h
PR unite (30g)
96

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

La issue nomina preg_quote() e preg_replace(), ma non fornisce file né test. Inizia tracciandone l’implementazione e l’analisi delle sostituzioni, quindi verifica la gestione proposta dei backslash e dei simboli del dollaro rispetto al caso di injection mostrato. Il lavoro è completo quando sono stati definiti il contratto di escaping, implementata la nuova funzione e aggiunta la copertura per stringhe di sostituzione come Tomas$1Fejfar.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
php
Ambito
backend
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.