0

このタグのvalue属性に基づいてファイルをダウンロードするためにJavaScriptを使用する.aspxページを変更しています。

<input type="hidden" id="launchDocument" value="pdf/<%=Settings.LaunchDocument%>" >

その値は現在、Web.configファイルにハードコードされています。クライアントは、このページをアーカイブされたニュースレターのダウンロードページにしたいと考えています。私の考えは、送信ページがダウンロードされるファイルを定義できるように、ページにクエリ文字列からファイル名をプルさせることでした。

<input type="hidden" id="launchDocument" value="../pdf/<%=Request.QueryString["filename"]%>" />

しかし、私はこの方法にセキュリティ上のリスクがあるかどうか心配しています。ある場合、ページに追加する前に、クエリ文字列の値をチェックして、有効な.pdfファイル名であることを確認するためのベストプラクティスは何ですか?

助けてくれてありがとう!

4

4 に答える 4

3

実際のファイル名が必要なのはなぜですか?ファイル名をGUIDに関連付けるテーブルを作成し、それを渡します。

ダウンロードするときが来たら、ファイルをロードして吐き戻すスクリプトに転送します。

于 2011-04-21T13:40:43.317 に答える
0

これらのリクエストを監視するHTTPハンドラーを作成し、ハンドラーでファイルが存在するかどうか、適切なエラーページにリダイレクトされないかどうかを確認できます...

于 2011-04-21T13:17:00.223 に答える
0

フォーラム検索を使用すると、次のことがわかります。

ファイル名検証のためのC#の正規表現

于 2011-04-21T13:17:04.880 に答える
0
  1. <input>フィールドでファイル拡張子を使用しないでください
  2. 入力で指定されたパスには、常に.PDFを追加してください。
  3. 相対パスを絶対パスに展開します。
  4. 絶対パスを検証します(PDFダウンロードディレクトリにあることを確認してください)
于 2011-04-21T13:33:02.540 に答える