2017-05-29 6 views
0

私たちが取り組んでいるアプリケーションでクロスサイトスクリプティングに問題が発生しています。クロスサイトスクリプティング

私たちのアプリケーションは、AWS s3で静的なウェブサイトとしてホストしていたAngular 2でコード化されています。このアプリケーションは、AWS APIゲートウェイの背後にあるバックエンドに接続されています。

私たちのフロントエンドは、クロスサイトスクリプティングの原因となるすべてのAPI呼び出しを行いません。

http://docs.aws.amazon.com/waf/latest/developerguide/web-acl-xss-conditions.html#web-acl-xss-conditions-values

私はこの1つ上の自分を試してみましたが、それは私のために働く文句を言いません。ローカルのフロントエンドとバックエンドは通信可能であり、どちらも自前で動作します。

この問題を処理するにはあまり先進的な方法はありませんか?

ありがとうございます!

+0

URLパラメータを検証していますか? XSSチェッカーは、URLにJavaScriptマークアップを送信しようとする可能性があるため、これについて不平を言っています。危険なタグを取り除いて文字列を消毒しなければ、ここに悪質なスクリプトを挿入することは可能です。 –

+0

@RaviChandra、どうすればそれらを検証できますか? AWS上?私はこの問題をあまり知らない。 – sHamann

答えて

1

あなたはまた、簡単にAWS Consoleを使用してCORSを有効にすることができます。 more details on enabling CORSについては、このガイドをご覧ください。

2

APIゲートウェイでCORSを有効にしましたか? 私はまったく同じ種類のアプリケーションを持っており、APIゲートウェイではCORSをアクティブにする必要があります。 ラムダにリンクされたリソース(POSTでは、覚えていれば必須です)にOPTIONメソッドを追加します。ここ はCORSを活性化させる方法を、プログラムのPythonでの例です:

gateway = boto3.client('apigateway', region_name=self.conf.region) 
 
gateway.put_method(
 
    restApiId=apiId, 
 
    resourceId=resourceId, 
 
    httpMethod="OPTIONS", 
 
    authorizationType="NONE" 
 
) 
 

 
gateway.put_method_response(
 
restApiId=apiId, 
 
resourceId=resourceId, 
 
httpMethod="OPTIONS", 
 
statusCode="200", 
 
responseParameters={ 
 
    'method.response.header.Access-Control-Allow-Headers': True, 
 
    'method.response.header.Access-Control-Allow-Origin': True, 
 
    'method.response.header.Access-Control-Allow-Methods': True 
 
}, 
 
responseModels={ 
 
    'application/json': 'Empty' 
 
} 
 
    ) 
 

 
gateway.put_integration(
 
    restApiId=api['id'], 
 
    resourceId=apiResource['id'], 
 
    httpMethod="OPTIONS", 
 
    type="MOCK", 
 
    requestTemplates={ 
 
     'application/json': '{"statusCode": 200}' 
 
} 
 
) 
 

 
gateway.put_integration_response(
 
    restApiId=api['id'], 
 
    resourceId=apiResource['id'], 
 
    httpMethod="OPTIONS", 
 
    statusCode="200", 
 
    selectionPattern=".*", 
 
    responseParameters={ 
 
    "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'", 
 
    "method.response.header.Access-Control-Allow-Methods": "'*'", 
 
    "method.response.header.Access-Control-Allow-Origin": "'*'" 
 
    }, 
 
    responseTemplates={ 
 
    'application/json': '' 
 
    } 
 
) 
 

 
gateway.put_method_response(
 
    restApiId=apiId, 
 
    resourceId=resourceId, 
 
    httpMethod="POST", 
 
    statusCode=200, 
 
    responseParameters={'method.response.header.Access-Control-Allow-Origin': True}, 
 
    responseModels={'application/json': 'Empty'}

関連する問題