2016-11-10 7 views
0

Ich muss eine Reihe von String-Variablen als Payloads in einer HTTP-POST-Nachricht mit Perl senden.Entfernen Sie unsichere HTTP-Zeichen aus einer Zeichenfolge

Ich möchte "unsichere" Zeichen wie < > “ ‘ % ;) (& + aus meiner String-Variable entfernen.

Ich weiß, dass ich ein Regex-Muster verwenden kann, um jedes dieser Zeichen zu finden und zu ersetzen, aber ich frage mich, ob es eine vorhandene Perl-Bibliothek gibt, die das bereits tut.

Zum Beispiel fand ich Apache::Util

my $esc = Apache::Util::escape_uri($uri); 

Kann ich Apache::Util::escape für diesen Einsatz? Oder gibt es einen besseren Weg?

EDIT 1: Ich habe bereits erwähnt, dass durch unsafe, ich meine Zeichen wie < > “ ‘ % ;) (& +, die in SQL-Injektion verwendet werden können. Ich weiß nicht, wie ich dieses Problem besser beschreiben soll.

EDIT 2: Hier ist der Code, den ich auf -es arbeite ist ein Embedded Perl-Code:

$cgi = CGI->new(); 
my $param1 = $cgi->param('param1'); 
my $param2 = $cgi->param('param2'); 
my $param3 = $cgi->param('param3'); 

# I want to remove unsafe characters (< > “ ‘ % ;) (& +) from $param1, $param2 and $param3 
# Q is, do I use Apache::Util::escape_uri; even if that's for removing unsafe chars from URI? 
# OR do I use URI::Escape 'uri_escape';? 
$script = <<__HTML__; 
    <script> 
     API.call ({ 
      'paramA': '$param1', 
      'paramB': '$param2', 
      'paramC': '$param3' 
     }); 
    </script> 
__HTML__ 

EDIT 3: Wenn jemand anderes die gleiche Frage hat, wie ich ein Perl-Schreiben endete . Funktion, die für bestimmte Zeichen wie „(“, „{“, „$“, sieht „;“, etc. und entfernt sie von Ihrem bereitgestellt String-Parameter

Liste aller Charaktere, die ich entkommen ist: ";", "(", ")", "[", "]", "{", "}", "~", "`", "/", "<", ">", "&", "|", "'", "\"", "\\"

Offensichtlich gibt es auch Platz für Ausschlüsse.

+1

Verwenden Sie derzeit CGI? Es gibt eine ähnliche Funktion wie 'A :: U :: escape_uri()'. http://perldoc.perl.org/CGI.html#AUTOESCAPING-HTML – PerlDuck

+0

Mir ist gerade aufgefallen: Willst du *** *** deine Daten bereits entkamen, schreibst du also die Clientseite? Wenn ich recht habe, dann bitte sagen Sie, welche Module Sie bereits verwenden. – PerlDuck

+0

Um ein wenig mehr zu erarbeiten, ist dies eine eingebettete Perl-Seite. Ich erzeuge einige Daten als Perl-String-Variablen, die ich als einfachen JavaScript-POST-Aufruf auf dieser EPL-Seite senden werde. Also möchte ich meine Variablen vor dem JavaScript-POST-Aufruf bereinigen. – BlueChips23

Antwort

1

Es gibt keine allgemeine Definition von unsicher Zeichen, so fällt es Ihnen zu bestimmen, ob alle Ihre Antworten erfüllen Ihre Anforderung

bei the source of Apache::Util Blick es hat einige sehr unangenehme Dinge ihren eigenen Namensraum, und Ich würde es nicht glauben. Es ist beabsichtigt, als Bestandteil von mod_perl verwendet werden, und nicht isoliert

zugegriffen werden soll Ich denke, die kanonische Weise HTTP URIs der Flucht aus dem URI::Escape Modul

use URI::Escape 'uri_escape'; 

Sie müssen Daten zu verwenden ist liefern und Code für weitere Hilfe als diese

+0

Ich denke, das ist genug für meine Bedürfnisse. Durch unsichere habe ich bereits erwähnt, dass ich "< >" '% entfernen will;) (& + '' die möglicherweise für SQL-Injektion verwendet werden kann Wenn '' URI :: Escape 'uri_escape'' das tut, dann ist das alles was ich brauche. – BlueChips23

Verwandte Themen