hallo
wenn ich eine Template-Engine hätte, ...
Wozu sollte eine TE zwischen HTML und JS unterscheiden können?
Gute Frage. Dann testen wir doch die Template-Engine mal?
use HTML::Template
erzeuge ein Template mit
(html hier)
<script>
//<!–-
var ob = <TMPL_VAR SCRIPT_DATA>;
//-->
</script>
(html hier)
Dann benutze das Template
use HTML::Template;
use Json;
my $template = HTML::Template->new(
filename => 'javascripttest.tmpl',
# suche die geeignete Option
option => 'value',
);
$template->param(
SCRIPT_DATA => encode_json([
"<!--<script>alert(\"gotcha\")</script>-->",
"</script>-->!--<script>alert(\"gotcha\")</script>-->",
"--><script>alert(\"gotcha\")</script>-->",
"<![CDATA[<script>var n=0;while(true){n++;}</script>]]>",
"<![CDATA[<]]>/SCRIPT<![CDATA[>]]></foo>",
q{<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [<!ELEMENT foo ANY><!ENTITY xxe SYSTEM "file:///etc/shadow">]><foo>&xee;</foo>},
]),
);
Und dann benutzen wir die Ausgabe im Browser.
Was wohl bei verschiedenen Angaben für Option geschieht? Ich rate einfach mal: HTML::Template ist für diese Art Template nicht gerüstet.
--
Neu im Forum! Signaturen kann man ausblenden!
Neu im Forum! Signaturen kann man ausblenden!