Heim  >  Artikel  >  Java  >  Fünf Tipps zur Verwendung der Java API

Fünf Tipps zur Verwendung der Java API

黄舟
黄舟Original
2017-10-19 10:20:041652Durchsuche

In diesem Artikel werden hauptsächlich einfache und benutzerfreundliche Techniken zur Sicherheit und Leistung der Java-API vorgestellt. Er hat einen gewissen Referenzwert.

In diesem Artikel werden einige verwandte, einfache Techniken vorgestellt -Verwenden Sie Tipps zur Sicherheit und Leistung der Java-API, einschließlich Vorschlägen zum Schutz von API-Schlüsseln und Framework-Auswahlmöglichkeiten für die Entwicklung von Webdiensten.

Programmierer lieben die Verwendung von APIs! Beispielsweise beim Erstellen von APIs für App-Anwendungen oder als Teil einer Microservices-Architektur. Natürlich besteht die Voraussetzung für die Verwendung von APIs darin, Ihnen die Arbeit zu erleichtern. Bemühungen, die Entwicklung zu vereinfachen und die Arbeitseffizienz zu verbessern, erfordern manchmal die Suche nach neuen Bibliotheken oder Prozessen (oder die Reduzierung von Prozessen). Für viele Entwicklungsteams nimmt die Verwaltung der Authentifizierung und Zugriffskontrolle für ihre APPs und APIs viel Zeit in Anspruch. Deshalb möchten wir Ihnen einige Tipps geben, die Ihnen Zeit sparen, den Code-Schreibaufwand reduzieren und Ihre Anwendungen sicherer und einfacher machen können zu pflegen.

Lassen Sie mich zunächst das in diesem Artikel erwähnte Hintergrundwissen vorstellen: Okta ist eine Java-Anwendung, die auf REST- und JSON-API basiert und mit dem Spring-Framework erstellt wurde. Die Anwendungen unseres Unternehmens speichern die Identitätsdaten der Benutzer und die sensiblen Daten anderer Unternehmen. Daher ist Sicherheit für uns das Wichtigste. Deshalb ist meine erste Bitte an diese Tipps, dass sie dazu beitragen können, Ihre Java-Anwendungen sicherer zu machen.

Diese Vorschläge sollten für jede Art von Java-Anwendung gelten. Sie helfen Ihnen, Code schneller, aber mit weniger Code und sicherer zu schreiben: Es ist wirklich eine Win-Win-Win-Situation!

1. Implementieren Sie das Sicherheits-Framework nicht selbst

Im Ernst, versuchen Sie nicht, den Sicherheitscode selbst zu implementieren, das ist zu schwierig.

Fast jeder weiß, dass man die Implementierung von Algorithmen wie Verschlüsselung vermeiden sollte. Ebenso kann der Rest des Sicherheits-Stacks Ihrer Anwendung kostspielig und riskant sein. Sie werden höchstwahrscheinlich einige Fehler machen. Seit 1999 wurden 89.373 CVEs (Public Vulnerabilities and Exposures) veröffentlicht. Und die Entdecker der meisten von ihnen sind sehr kluge Leute.

Sie denken vielleicht, dass die Handhabung eines einfachen Anwendungsfalls (z. B. die Validierung des Passworts eines Benutzers) trivial ist – Sie müssen lediglich ein Paar Zeichenfolgen vergleichen. Es wäre falsch, so zu denken. Sie müssen Passwort-Hashes überprüfen, Anmeldeversuche überwachen, Wörterbuchangriffe abwehren, und das ist nur die Spitze des Eisbergs. Am besten verwenden Sie vorhandene ausgereifte Bibliotheken oder Frameworks wie Shiro oder Spring Security von Apache und lassen diese Frameworks verschiedene komplexe Sicherheitsprobleme bewältigen.

2. Verwenden Sie immer TLS!  

Wir schreiben das Jahr 2017 und alle Websites sollten HTTPS verwenden, sogar das Intranet des Unternehmens. Let's encrypt macht HTTPS einfach und unkompliziert, was bedeutet, dass Sie keine unsicheren selbstsignierten Schlüssel mehr verwenden können! Sie können sogar eine lokale Tomcat- oder Nginx-Instanz mit Zertifikatauthentifizierung einrichten.

Es ist nur eine einfache Codezeile erforderlich, damit Ihre Anwendung TLS (HTTPS/SSL) erfordert. Jeder sollte es tun! Wenn Sie das Apache Shiro-Framework verwenden, müssen Sie nur die Eigenschaften festlegen:


[urls]/** = ssl

Wenn Sie Spring Security verwenden, müssen Sie beim Festlegen nur einfach eine Methode aufrufen HTTP-Sicherheit.


http.requiresChannel()
.anyRequest().requiresSecure();

In Spring Boot müssen Sie nur einige Eigenschaften festlegen, wie folgt:


server.port=8443
server.ssl.key-store=classpath:keystore.jks
server.ssl.key-store-password=secret
server.ssl.key-password=another-secret

3. Verwenden Sie Spring Boot, um einen Webdienst zu erstellen

Spring Boot ist eine Vereinfachung der Spring-Plattform, die das Schreiben von Spring-Anwendungen erleichtert Es muss nur sehr wenig Code geschrieben werden. Der im Artikel „12 bei App-Anwendungen zu berücksichtigende Faktoren“ erwähnte Punkt. Wenn Sie immer noch programmieren, indem Sie War-Pakete erstellen, lohnt es sich, Spring Boot zu erlernen. Mit Spring Boot können Sie komplexe und unterschiedliche Arten von Anwendungen erstellen. Sie können beispielsweise eine einfache Annotation (@EnableResourceServer) verwenden, um einen OAuth-Ressourcenserver zu erstellen, oder seinen Port über ein einfaches Attribut ändern:


server.port = 8090

Wenn Sie SpringBoot nicht verwenden möchten, können Sie Dropwizard verwenden, um einen JAX-RS-Technologie-Stack zu erstellen.

4. Überwachen Sie Anwendungen und Leistungsindikatoren

Es ist schwierig, Programmfehler ohne Daten zu finden. Spring Boot erleichtert das Sammeln von Indikatordaten mithilfe von Actuator. Sie müssen der Anwendung lediglich eine Abhängigkeit hinzufügen, wie folgt:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>`

Dann können Sie die verwenden Geben Sie im Browser /health oder /metrics ein, nachdem Sie auf die Anwendungsadresse zugegriffen haben, um den Gesundheitsstatus oder die Indikatoren der Anwendung zu überprüfen. Das Dropwizard-Framework implementiert die gleiche Funktionalität über /healthcheck und /metrics.

Das Folgende ist das von der Spring Boot-Anwendung über /metrics ausgegebene Ergebnis:


  {
  "classes": 7704,
  "classes.loaded": 7704,
  "classes.unloaded": 0,
  "counter.status.200.metrics": 1,
  "gauge.response.metrics": 99.0,
  "gc.ps_marksweep.count": 2,
  "gc.ps_marksweep.time": 272,
  "gc.ps_scavenge.count": 8,
  "gc.ps_scavenge.time": 136,
  "heap": 3728384,
  "heap.committed": 470016,
  "heap.init": 262144,
  "heap.used": 207793,
  "httpsessions.active": 0,
  "httpsessions.max": -1,
  "instance.uptime": 25020,
  "mem": 529086,
  "mem.free": 262222,
  "nonheap": 0,
  "nonheap.committed": 60608,
  "nonheap.init": 2496,
  "nonheap.used": 59067,
  "processors": 8,
  "systemload.average": 5.56103515625,
  "threads": 24,
  "threads.daemon": 22,
  "threads.peak": 28,
  "threads.totalStarted": 32,
  "uptime": 37182}

5. Schützen Sie vertrauliche Informationen

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


$ chmod u=r,go-rwx ~/.okta/okta.yaml

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

Das obige ist der detaillierte Inhalt vonFünf Tipps zur Verwendung der Java API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn