Spring Securityを使用したDNS再バインド攻撃からWebアプリケーションを保護することは可能ですか?同じ種類の攻撃からサーバーを保護するためのGlassfish 4.1の設定方法は? HostヘッダーがサーバーのDNS名と一致しないが、サンプルコードを見つけることができなかった場合、すべてのhttp接続をブロックすることでこれが解決できることを読んだことがあります。Spring Securityを使用してAnti DNS Pinning(DNS再バインド)防御を構築する方法は?
0
A
答えて
0
はい、それは可能です、あなたはjavax.servlet.Filter
を拡張し、そこに手動で「ホスト」ヘッダを確認することができますクラスを使用することができ、ここでの例です:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DNSHostFilter implements Filter {
@Override
public void init(FilterConfig fc) throws ServletException { }
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain fc) throws IOException, ServletException {
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String header = servletRequest.getHeader("Host");
if (!header.contains(servletRequest.getLocalAddr())) {
servletResponse.sendError(401);
} else {
fc.doFilter(request, response);
}
}
@Override
public void destroy() {}
}
重要:あなたがいるかどうかを確認する必要がありますメソッドservletRequest.getLocalAddr()
があなたのサーバの正しいIPを返します。そうでなければ、あなたのIPをそこに文字列として挿入することができます(それほど柔軟性はありません)。
"Host"ヘッダーにサーバーIPが含まれていない場合、HTTP 401で応答します。そうでない場合、要求は通常正常に実行されます。
このようweb.xml
を経由して働くだろう通常のJSF Webアプリケーションでのフィルタを登録する:
<filter>
<filter-name>DNSHostFilter</filter-name>
<filter-class>your.package.DNSHostFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DNSHostFilter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
をSpringベースのアプリケーションでは、コンフィギュレーションクラスでこのようにそれを登録することが可能でなければなりません:
@Bean
public FilterRegistrationBean filterRegistrationBean2() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new DNSHostFilter());
registration.addUrlPatterns("/*");
return registration;
}
関連する問題
- 1. DNSサーバーのDNSサブドメインをAzure DNSでフルフィルにする方法
- 2. Spring Securityを使ってセッションを制御する方法
- 3. WindowsでDNSを使用してSimpleHTTPServerを設定する方法
- 4. Azure DNSをAzure VNetの内部DNSとして使用
- 5. JSONを使用してJavascriptオブジェクトを再構築する方法
- 6. DNS TXT非デフォルトDNSサーバーを使用したレコード照会
- 7. Perl - ソケットと特定のDNSサーバーを使用したDNSルックアップ
- 8. perlとNet :: DNSを使用したDNSチェック
- 9. Rx Repeat()とReplay()を使用してDNSクエリをキャッシュして再起動する
- 10. DNSサブドメインの構文
- 11. Chrome DNSのなりすまし防止
- 12. "kube-dns \" "kube-dns \" "
- 13. spring mvcを使用してビューを制御する方法は?
- 14. デルファイでindyを使用してDNSレコードを検索する方法
- 15. BOTO Pythonを使用してAWSでインスタンスのパブリックDNSを取得する方法
- 16. Android - TorサービスがSocketを使用してDNS解決を実行する方法
- 17. DNSレコードを使用してドメインとTLDを区別する方法
- 18. ユーザーが使用しているDNSサーバーを確認する方法
- 19. okhttp3 Dnsを設定する方法
- 20. LinuxサーバーでDNSを使用する
- 21. Nettyを使用するカスタムDNSサーバー
- 22. フルテキストインデックスを再構築する方法は?
- 23. スマートフォンでDNSローカルアドレスを使用してPHPアプリケーションにアクセスする方法
- 24. RESTでSpringブートを使用してSpring Securityにユーザーロールを更新する方法
- 25. 名前付き/バインド/ DNS完全ログを有効にする方法は?
- 26. PHPを使用したDNSキャッシュ
- 27. getaddrinfoを使用したDNSのキャッシュ
- 28. dns-sdを使用したサービス検出
- 29. Google Cloud DNSを使用したKubernetes
- 30. iOS:DNSServiceQueryRecordを使用したDNS SRVルックアップ