0

私は実際にこのコードを使用して、サーバー上の「使用できない」フォルダーから JSP の HTML ファイルを出力しています (ファイルの正しい URL を書いている場合、ブラウザーでそれらを表示できないことを意味します)。 ):

InputStreamReader isr = new InputStreamReader(new FileInputStream(request.getParameter("path")));
BufferedReader br = new BufferedReader(isr);    
String line = br.readLine();
while(line!=null){
    out.println(line);
    line = br.readLine();
}

「パス」には私のファイルの URL があります。これは実際には機能しますが、このコードを起動した同じページに HTML ファイルが表示されます。このHTML Aタグを次のように設定するときのように、実際には新しいページでこれを行う必要があります。

<a href="www.mywebsite.com" TARGET="_new">LINK</a>
4

1 に答える 1

-1

私はこのようにそれを解決しました:

<a href="www.mywebsite.com/print?id=1&file=myfile.html" TARGET="_new">View</a>

サーブレット印刷では、このコードを doGet/doPost によって呼び出される processRequest(HttpServletRequest リクエスト、HttpServletResponse レスポンス) に入れます。

String path1 = "mydir1/";
String path2 = "mydir2/";
String file = request.getParameter("file");    
InputStreamReader isr;
BufferedReader br;
String line = "";
char id = request.getParameter("id").charAt(0);
if(id == '1') {
    isr = new InputStreamReader(new FileInputStream(mydir1 + file));
    br = new BufferedReader(isr);
    line = br.readLine();
    while(line!=null){
        out.println(line);
        line = br.readLine();
    }
}
else if(id == '2') {
    isr = new InputStreamReader(new FileInputStream(mydir2 + file));
    br = new BufferedReader(isr);
    line = br.readLine();
    while(line!=null){
        out.println(line);
        line = br.readLine();
    }
}
else {
    out.println("Error");
}

これにより、エンドユーザー/ハッカーがパス全体を表示したり、get メソッドを介して渡すことができないため、セキュリティ上の問題はなくなります。

于 2012-12-27T11:03:56.537 に答える