2017-05-29 134 views
0

我們正在努力應對我們正在開發的應用上的跨站點垃圾郵件。跨站點垃圾郵件

我們的應用程序以Angular 2編碼,我們在AWS s3中作爲靜態網站託管。此應用連接到位於AWS API網關後面的後端。

我們的前端不能進行任何api調用,導致跨站點垃圾郵件。

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

我想我自己在這一個,但它不會爲我工作。本地前端和後端可以進行通信,並且它們都可以獨立工作。

是否有一個很好的,不是很先進的方式來處理這個問題?

提前致謝!

+0

您是否正在驗證URL參數? XSS跳棋抱怨這一點,因爲它可能會嘗試在URL中發送JavaScript標記。如果我們不通過剝離危險標籤來清理字符串,則可以在此處插入惡意腳本。 –

+0

@RaviChandra,我如何驗證它們?通過AWS?我對這個問題沒有太多瞭解。 – sHamann

回答

2

您是否在API網關上激活了CORS? 我有完全相同的應用程序,並且在API網關中需要激活CORS: 在鏈接到lambda的資源上(在POST中,如果我沒記錯的話,這是強制性的)添加OPTION方法。 這裏是CORS如何編程激活蟒蛇一個例子:

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'}