質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.38%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

4049閲覧

AWS上のWebシステムへのファイルアップロード時にAWS WAFでブロックされる。

august

総合スコア8

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2022/11/22 06:22

編集2022/11/23 01:54

前提

これまでイントラ内で運用していたWebシステムをAWS上に持っていくとこのことで挙動を見ています。
ファイルをアップロードする処理を実行した際に、AWS WAFの検知ルールに引っかかっており対応が必要な状態です。
クライアント側でファイルをアップロードする処理でのXSS対策はどの様な実装になるのかご教授頂きたいです。

■対象ルール
CrossSiteScripting_BODY

実現したいこと

ファイルのアップロードを行いたい。

該当のソースコード

js

1var xhr = new XMLHttpRequest(); 2var form = document.getElementById('uploadFile'); 3var formData = new FormData(form); 4formData.append('fileName', document.getElementById('fileName').value); 5formData.append('filePath', document.getElementById('filePath').value); 6xhr.open('POST', 'サーバー側のURL', true); 7xhr.send(formData);

試したこと

正常にアップロードできるファイルと、できないファイルがあります。
そもそもリクエストがAWS WAFによってサーバー側の処理まで届いて居ないようなので
クライアント側で何かしらする必要があると思っており

調べてみるとサニタイズが必要とのことですが、fileName, filePathのサニタイズでは解決せず。
uploadFile自体をサニタイズ?するのかいまいちよくわかってないです。

追記

WAF側のログを確認したところ、以下の問題があるとのことでした
リクエストボディに格納されているファイルのメタ情報が引っかかるようですがこの場合はどのような対応が必要となるのでしょうか。

json

1 "terminatingRuleMatchDetails": [ 2 { 3 "conditionType": "XSS", 4 "location": "BODY", 5 "matchedData": ["xmlns:x", "adobe:ns:meta/"] 6 } 7 ],

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2022/11/22 07:35

素直に考えたらファイル名とかパスだけでなく、送っているデータの全量に対してチェックがかかるはずです。 WAFにブロックされたリクエストの中身をログからより詳細に調べてみてはどうでしょうか。
guest

回答2

0

調べるとAWSのBlogに下記のようなものがあります。
AWS WAF によってブロックされているファイルをアップロードするにはどうすればよいですか?

結局の所、セキュリティを損ねないレベルで個別に除外するしかないと思います。
具体的な方法は要件に照らし合わせて考えてみてください。

投稿2022/11/23 08:50

yu_1985

総合スコア7579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

今回はAWS WAF側のブロックルールを変更し対応を行いました。

プログラムにて対応を行う場合については以下の様な方法があるそうで
参考:AWS WAF Getting 403 forbidden error while trying to upload an image

ファイルを読み込んだメタデータを含むBlobはJavascript側で変更ができない仕様なので
base64変換した文字列として送る形になるようでした。

Blobの分割はできるみたいですが
分割対象の位置が対象の部分でない場合には意味がなさそうなので今回は深掘りしていません。

投稿2022/11/24 01:40

編集2022/11/24 01:41
august

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.38%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問