Clone references before escaping?
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 28/100
Direzione di ricerca
Inizia dal punto di ingresso _encode descritto nell’issue e segui il modo in cui elabora ricorsivamente i parametri dei template e i riferimenti. Verifica l’esempio che coinvolge Dancer::Template::Abstract e conferma che l’escaping non modifica più le impostazioni originali o i riferimenti $foo; aggiungi o esegui i test esistenti pertinenti, se presenti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
As originally discovered in http://www.backup-manager.org/pipermail/dancer-users/2012-April/002424.html :
When automatic_escaping is enabled, we recursively encode HTML entities in template params, following references.
Since the app's settings are automatically passed to the template by Dancer::Template::Abstract, stored as a reference to the real settings hashref, we can inadvertently go HTML-encoding stuff in the app's actual settings.
A partial fix is for Dancer to clone the settings rather than storing an actual reference, but of course that still means the problem can occur in other cases.
For example:
get '/' => sub {
my $foo = { foo => '<Foo>' };
my $html = template 'bar', { foo => $foo };
# $foo->{foo} has been changed to <Foo>
};
Probably a safer fix is for _encode to automatically clone any reference it's about to change before making changes. This would need some refactoring in _encode to assume that it's starting with a hashref (which it will be) and to pass on both the key and the value each time, rather than simply passing the reference to the value when recursing.
- Lingua principale
- Perl
- Stelle
- 4
- Fork
- 3
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
libwww-perl/URI#211 ·
-
Type: Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
inverse-inc/packetfence#9549 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 80/100
jimsalterjrs/sanoid#1116 · 1 reazione ·
-
Add .gitattributes so share/skel keeps LF on a Windows git checkoutForse già presa @sadhana-s-codez l’ha presa 4 giorni fa. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
PerlDancer/Dancer2#1854 · 1 commento ·