2016-11-10 28 views
0

我必須使用Perl在HTTP POST消息中發送一堆字符串變量作爲有效內容。從字符串中刪除不安全的HTTP字符

我想從我的字符串變量中刪除「不安全」字符,如< > 「 ‘ % ;) (& +

我知道我可以使用正則表達式模式來查找和替換每個這些字符,但我想知道是否有任何現有的Perl庫已經這樣做。

例如,我發現Apache::Util

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

我可以使用Apache::Util::escape這個?或者,還有更好的方法?

EDIT 1:我已經提到,通過不安全的,我的意思是字符,如< > 「 ‘ % ;) (& +其可以在SQL注入使用。我不知道如何更好地描述這個問題。

編輯2:下面是我在上 - 它使用的代碼是一個嵌入式Perl代碼:

$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__ 

編輯3:如果任何人有同樣的問題,我最後寫一個perl 。功能查找特定的字符,如「(」,「{」,「$」,「;」等,並從您提供的字符串參數刪除它們

,我逃避所有字符的名單是: ";", "(", ")", "[", "]", "{", "}", "~", "`", "/", "<", ">", "&", "|", "'", "\"", "\\"

很明顯,還有排除的空間。

+1

你目前使用CGI嗎?有一個類似於'A :: U :: escape_uri()'的函數。 http://perldoc.perl.org/CGI.html#AUTOESCAPING-HTML – PerlDuck

+0

我剛剛注意到:你想***發送你的數據已經逃脫,所以你寫客戶端?如果我是對的,那麼請告訴你已經使用了哪些模塊。 – PerlDuck

+0

再詳細一點,這是一個嵌入式Perl頁面。我正在生成一些數據作爲perl字符串變量,我將在該EPL頁面中作爲簡單的JavaScript POST調用發送。所以我想在JavaScript POST調用之前清理我的變量。 – BlueChips23

回答

1

還有就是不安全字符沒有通用的定義,所以它屬於您確定您的任何答案是否符合您的要求

看着the source of Apache::Util它做一些非常不愉快的事情,以自己的名稱空間,我不會相信它。它的目的是被用作mod_perl一個組成部分,而不應孤立地訪問

我想逃避HTTP URI的規範的方法是使用URI::Escape模塊

use URI::Escape 'uri_escape'; 

你必須提供數據並代碼尋求更多幫助

+0

我認爲這已經足夠滿足我的需求了,由於不安全,我已經提到過我想刪除''< >''%;)(&+'',它可能會被用於SQL注入。如果''URI :: Escape'uri_escape''那麼做,那麼這就是我需要的。 – BlueChips23