2014-11-22 135 views
0

我試圖實現類似於此演示http://www.steve.org.uk/Security/XSS/Tutorial/simple.html的功能,其中我接受textarea中的用戶輸入。我正在使用CGI並嘗試使用以下代碼。HTML文本區域中的XSS注入

HTML代碼片段:

<form action="test.cgi" method="post"> 
    Message: 
    <textarea name="text" rows="4" cols="20"></textarea> 
    <input type="submit" value="Submit"> 
</form> 

test.cgi代碼片段:

my $cgi = new CGI; 
my $text = $cgi->param("text"); 
print $text 

我相信這不會工作,如果插入(不會與消息顯示彈出的了) textarea字段用一個簡單的用戶輸入如下。

<script> alert("Worked") </script> 

請問請問爲什麼?我是CGI的新手。如果問題微不足道,我很抱歉。此外,如果此問題已被回答,我很抱歉。我發現了這個問題(Cross Site Scripting injection),但是請問知道演示如何在腳本simple.cgi中顯示警告框?另外,我在這裏可能是錯的,但是沒有提及在他的代碼中使用JavaScript來執行相同的操作。

回答

0
use HTML::Entities; 

my $cgi = new CGI; 
my $text = encode_entities($cgi->param("text")); 
print $text 
+0

你好,@Dienes。恐怕這不符合預期。它向網絡瀏覽器輸出。我在這裏錯過了什麼嗎? – user1302 2014-11-22 19:35:21

+0

替換< and >這個字符<和> in $ text變量 – 2014-11-22 19:42:58