Facebook Messenger platformを使用してチャットボットアプリケーションを開発しました。 ウェブプラットフォームに埋め込まれたTomcatでSpring Bootを使用しました。 アプリケーションは、Amazon aws上で動作し、WWWにオープンし、https上のMessengerからのコールバックを受信するためのWebhookとして使用する必要があります。Amazonでスプリングブートアプリケーションを導入するためのベストプラクティス
私は、アプリケーションを安全にする方法をアドバイスする必要があるため、ハッキングされたり、Facebookから来ていないリクエストにあふれたりすることはありません。
私はアプリケーションにセキュリティで保護された(SSL)接続が必要だと思っていましたが、application.propertiesの "security.require_ssl = true"を使用しても問題はありませんでした。おそらく、私はこのことの意味とそれをどのように構成するのかが分かりません。 https要求ではない要求をブロックする方法がありますか?または、アプリケーションレベルでMessengerの外部にあるリクエストをブロックする方法はありますか?
ありがとうございました!一方
EDITは、私はハンドラインターセプターを使用してアプリケーション層で他のIPアドレスからの要求をブロック:
@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer, WebMvcConfigurer{
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new HandlerInterceptor() {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
if (! (request.getRemoteAddr().equals("173.252.88.66") || request.getRemoteAddr().equals("127.0.0.1")|| request.getRemoteAddr().equals("0:0:0:0:0:0:0:1"))){
logger.warn("Request is not coming from authorized remote address: " + request.getRemoteAddr()+". Rejecting");
response.getWriter().write("Unauthorized Address");
response.setStatus(401);
return false;
} else {
return true;
}
}
}
Facebookのリファレンスドキュメントから、私は、コールバック・トークンを設定する可能性がある参照(HTTPS:/ /developers.facebook.com/docs/messenger-platform/webhook-reference)、あなたはそれを設定しましたか?あなたは春のアプリケーション側でそれを受け取りますか(パスまたはパラメータを取得する)? –
@GuyBoualletトークンは初回検証用です。進行中のコールバックにはトークンが含まれていません。あなたは私が逃した何かを見ましたか? –
X-Hub-Signatureと呼ばれるHTTPヘッダーがあるかどうかを確認しましたか? –