6

fortify を使用してスキャンすると、以下のコードで「よく誤用される: 認証」のような脆弱性が発生します。この問題を回避するための修正はありますか。関連する投稿を見ましたが、解決策を得ることができません.ESAPI を使用して、ホスト名と ipadress の正規表現を提供しましたが、機能しません。 addr.getHostAddress() java.net.InetAddress.getByName(nameServiceHost); java.net.InetAddress.getLocalHost().getCanonicalHostName() localhost.getHostName()

この問題を解決するために私に提案してください。

4

4 に答える 4

2

他のすべての回答は、組み込みの API を使用するのではなく、コマンド ラインなどを使用して回避策を提供しようとします。ただし、彼らは実際の問題を見落としています。ここで問題になっているのは API ではなく、認証に DNS を使用できるという前提です。

攻撃者は、有効な呼び出し元になりすます DNS 応答をスプーフィング(偽造) することができます。また、IP アドレス スプーフィングを使用して、DNS を攻撃することなく、有効な呼び出し元であるかのように見せかけることもできます。

TL;DR は DNS や発信者 IP を認証ソースとして使用しません。暗号化された接続に SSL/TLS を使用する代わりに、代わりにBasic-AuthenticationOauth2またはさらに優れたクライアント証明書 (別名 mTLS)を使用できます。

于 2020-03-22T22:23:54.723 に答える
0

リクエストが信頼できるホストからのものかどうかを確認できます

String ip = request.getRemoteAddr(); 
InetAddress addr = InetAddress.getByName(ip); 
if (addr.getCanonicalHostName().endsWith("trustme.com")) { 
 trusted = true; 
} 
于 2016-10-31T06:50:26.990 に答える