Java API を使用するための 5 つのヒント

黄舟
リリース: 2017-10-19 10:20:04
オリジナル
1821 人が閲覧しました

この記事では、主に Java API のセキュリティとパフォーマンスに関するシンプルで使いやすいテクニックを詳しく紹介します。興味のある方は参考にしてください。

この記事では、Java API のセキュリティとパフォーマンスに関するいくつかの側面を紹介します。 API キーを安全に保つためのヒントや、Web サービス開発用のフレームワークを選択するためのヒントなど、使用に役立つヒントが含まれています。

プログラマーは API を使用するのが大好きです!たとえば、アプリ アプリケーション用の API を構築したり、マイクロサービス アーキテクチャの一部として API を構築したりできます。もちろん、API を使用する前提は、作業を容易にすることです。開発を簡素化し、作業効率を向上させるためには、新しいライブラリやプロセスを見つける (またはプロセスを削減する) ことが必要な場合があります。多くの開発チームにとって、APP と API の認証とアクセス制御の管理には多くの時間がかかります。そのため、時間を節約し、コード記述量を減らし、アプリケーションをより安全かつ簡単にするためのヒントをいくつか共有したいと思います。維持すること。


まず、この記事で説明されている背景知識を紹介します。Okta は、Spring フレームワークを使用して構築された、REST および JSON API に基づいて構築された Java アプリケーションです。当社のアプリケーションはユーザーの ID 資格情報や他社の機密データを保存しているため、当社にとってセキュリティが最も重要です。したがって、これらのヒントに対する私の最初の要望は、Java アプリケーションの安全性を高めるのに役立つことです。

これらの提案は、あらゆる種類の Java アプリケーションに普遍的である必要があります。コードをより速く、より少ないコードで、そしてより安全に書くのに役立ちます。これはまさに win-win-win です。

1. セキュリティ フレームワークを自分で実装しないでください

真剣に、セキュリティ コードを自分で実装しようとしないでください。非常に難しいです。

暗号化などのアルゴリズムの実装を避けるべきことはほぼ誰もが知っています。同様に、アプリケーションの残りのセキュリティ スタックも高価でリスクが高い可能性があります。おそらくいくつかの間違いを犯すでしょう。 1999 年以来、89,373 件の CVE (公開脆弱性および暴露) がリリースされました。そして、それらのほとんどの発見者は非常に賢い人々です。

単純なユースケース (ユーザーのパスワードの検証など) の処理は、文字列のペアを比較するだけなので簡単だと思うかもしれません。そう考えるのは間違いです。パスワード ハッシュを検証し、ログイン試行を監査し、辞書攻撃を軽減する必要がありますが、それは氷山の一角にすぎません。最善の選択肢は、Apache の Roku や Spring Security などの既存の成熟したライブラリまたはフレームワークを使用し、これらのフレームワークにさまざまな複雑なセキュリティ問題を処理させることです。

2. 常に TLS を使用してください!

もう 2017 年になり、会社のイントラネットも含め、すべての Web サイトは HTTPS を使用する必要があります。 Let's encrypt を使用すると、HTTPS が簡単かつシンプルになります。つまり、安全でない自己署名キーはもう使用できません。証明書認証を使用してローカルの Tomcat または Nginx インスタンスをセットアップすることもできます。

アプリケーションに TLS (HTTPS/SSL) を要求させるのに必要なコードは 1 行だけです。誰もがそうすべきです。 Apache Taro フレームワークを使用する場合は、プロパティを設定するだけで済みます。


[urls]/** = ssl
ログイン後にコピー

Spring Security を使用する場合は、HttpSecurity を設定するときにメソッドを呼び出すだけです。


http.requiresChannel()
.anyRequest().requiresSecure();
ログイン後にコピー

Spring Boot では、次のようにいくつかのプロパティを設定するだけです:


server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=secret
server.ssl.key-password=another-secret
ログイン後にコピー

3. Spring Boot を使用して Web サービスを作成します

Spring Boot は Spring プラットフォームを簡素化したものです。これにより、Spring アプリケーションの作成が非常に簡単になりました。たとえば、「アプリ アプリケーションで考慮すべき 12 の要素」の記事で説明したアイデアを、非常に少ないコードで作成できます。まだ War パッケージをビルドしてコーディングを行っている場合は、Spring Boot を学ぶ価値があります。 Spring Boot を使用すると、複雑でさまざまな種類のアプリケーションを作成できます。たとえば、単純なアノテーション (@EnableResourceServer) を使用して OAuth リソース サーバーを構築したり、単純な属性を通じてそのポートを変更したりできます。 Spring Boot を使用したくない場合は、Dropwizard を使用して JAX-RS テクノロジー スタックを構築できます。

4. アプリケーションとパフォーマンス指標を監視する

データがないとプログラムのエラーを見つけるのは困難です。 Spring Boot では、Actuator を使用してインジケーター データを簡単に収集できます。次のようにアプリケーションに依存関係を追加するだけです:


server.port = 8090
ログイン後にコピー

次に、ブラウザー メトリクスを通じてアプリケーション アドレスにアクセスした後、/health または / を入力します。アプリケーションの健全性ステータスやインジケーターを確認します。 Dropwizard フレームワークは、/healthcheck および /metrics を通じて同じ機能を実装します。

以下は、/metrics を介して Spring Boot アプリケーションによって出力された結果です:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>`
ログイン後にコピー

5. 機密情報を保護します


人们都认为API密钥是不安全的,这是事实。密钥通过电子邮件发送或源代码管理系统控制。也许这是它们看起来比密码更不安全的原因,但它们也一样敏感。如果需要将API密钥存储在文件中,请确保授予文件有限的访问权限。例如,我们建议在私人目录中存放Okta的YAML文件并且赋予文件所有者只读权限。


$ chmod u=r,go-rwx ~/.okta/okta.yaml
ログイン後にコピー

如果你正为使用你的APP的用户创建API,记得提醒他们,如果无设置好权限的话,.SSH的忽文件是放在你的~/.ssh目录下,如果无设置好权限的话。GitHub 把它们放在“危险区域”,以提醒用户,这是十分有用的。

以上がJava API を使用するための 5 つのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート