>  기사  >  Java  >  Java API 사용을 위한 5가지 팁

Java API 사용을 위한 5가지 팁

黄舟
黄舟원래의
2017-10-19 10:20:041824검색

이 기사에서는 Java API 보안 및 성능에 대한 간단하고 사용하기 쉬운 기술을 주로 소개합니다. 관심 있는 친구가 참조할 수 있습니다.

이 기사에서는 Java API 보안 및 성능에 대한 몇 가지 측면을 소개합니다. API 키를 안전하게 유지하고 웹 서비스 개발을 위한 프레임워크를 선택하기 위한 몇 가지 제안을 포함한 사용 팁.

프로그래머는 API 사용을 좋아합니다! 예를 들어 앱 애플리케이션용 API를 구축하거나 마이크로서비스 아키텍처의 일부로 API를 구축합니다. 물론 API 사용의 전제는 작업을 더 쉽게 만드는 것입니다. 개발을 단순화하고 작업 효율성을 향상시키려는 노력은 때로는 새로운 라이브러리나 프로세스를 찾는 것(또는 프로세스를 줄이는 것)을 의미합니다. 많은 개발 팀의 경우 APP 및 API에 대한 인증 및 액세스 제어를 관리하는 데 많은 시간이 소요되므로 시간을 절약하고 코드 작성량을 줄이며 애플리케이션을 더욱 안전하고 쉽게 만들 수 있는 몇 가지 팁을 공유하고 싶습니다. 유지하기 위해.

먼저 이 글에서 언급된 배경지식을 소개하겠습니다. Okta는 Spring 프레임워크를 사용하여 구축된 REST 및 JSON API를 기반으로 구축된 Java 애플리케이션입니다. 우리 회사의 애플리케이션은 사용자의 신원 정보와 다른 회사의 민감한 데이터를 저장하므로 보안이 우리에게 가장 중요합니다. 따라서 이 팁에 대한 첫 번째 요청은 이러한 팁이 Java 애플리케이션을 더욱 안전하게 만드는 데 도움이 된다는 것입니다.

이러한 제안은 모든 종류의 Java 애플리케이션에 보편적이어야 합니다. 코드를 더 빠르게 작성하는 데 도움이 되지만 더 적은 양의 코드로 더 안전하게 사용할 수 있습니다. 정말 윈윈윈(win-win-win)입니다!

1. 보안 프레임워크를 직접 구현하지 마세요

진짜로 보안 코드를 직접 구현하려고 하지 마세요. 너무 어렵습니다.

암호화와 같은 알고리즘 구현을 피하는 것은 거의 모든 사람들이 알고 있습니다. 마찬가지로 애플리케이션의 나머지 보안 스택도 비용이 많이 들고 위험할 수 있습니다. 당신은 아마도 몇 가지 실수를 할 것입니다. 1999년 이후 89,373개의 CVE(공개 취약점 및 노출)가 게시되었습니다. 그리고 그들 대부분의 발견자들은 매우 똑똑한 사람들입니다.

간단한 사용 사례(예: 사용자 비밀번호 확인)를 처리하는 것이 하찮다고 생각할 수도 있습니다. 수행할 작업은 문자열 쌍을 비교하는 것뿐입니다. 그렇게 생각하는 것은 잘못된 것입니다. 비밀번호 해시를 확인하고, 로그인 시도를 감사하고, 사전 공격을 완화해야 하는데 이는 빙산의 일각에 불과합니다. 최선의 선택은 Apache의 Shiro 또는 Spring Security와 같은 기존의 성숙한 라이브러리나 프레임워크를 사용하고 이러한 프레임워크가 다양하고 복잡한 보안 문제를 처리하도록 하는 것입니다.

2. TLS를 사용하세요. 항상 TLS를 사용하세요!  

벌써 2017년인데, 회사 인트라넷을 포함한 모든 웹사이트는 HTTPS를 사용해야 합니다. Let's encrypt를 사용하면 HTTPS가 쉽고 간단해집니다. 즉, 더 이상 안전하지 않은 자체 서명 키를 사용할 수 없습니다! 인증서 인증을 사용하여 로컬 Tomcat 또는 Nginx 인스턴스를 설정할 수도 있습니다.

애플리케이션에 TLS(HTTPS/SSL)가 필요하도록 하려면 코드 한 줄만 있으면 됩니다. 모두가 그렇게 해야 합니다! Apache Shiro 프레임워크를 사용하는 경우 속성만 설정하면 됩니다.


[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를 사용하여 웹 서비스 생성

Spring Boot는 Spring 플랫폼을 단순화한 것입니다. 예를 들어 "앱 애플리케이션에서 고려해야 할 12가지 요소" 기사에서 언급한 아이디어를 아주 적은 코드로 작성할 수 있습니다. 여전히 War 패키지를 빌드하여 코딩을 하고 있다면 Spring Boot를 배울 가치가 있습니다. Spring Boot를 사용하여 복잡하고 다양한 유형의 애플리케이션을 만들 수 있습니다. 예를 들어 간단한 주석(@EnableResourceServer)을 사용하여 OAuth 리소스 서버를 구축하거나 간단한 속성을 통해 해당 포트를 변경할 수 있습니다.


server.port = 8090

Spring Boot를 사용하고 싶지 않다면 Dropwizard를 사용하여 JAX-RS 기술 스택을 구축할 수 있습니다.

4. 모니터 애플리케이션 및 성능 지표

데이터가 없으면 프로그램 오류를 찾기가 어렵습니다. Spring Boot를 사용하면 Actuator를 사용하여 지표 데이터를 쉽게 수집할 수 있습니다. 다음과 같이 애플리케이션에 종속성을 추가하기만 하면 됩니다.


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

그런 다음 브라우저 Metrics를 통해 애플리케이션 주소에 액세스한 후 /health 또는 /를 입력할 수 있습니다. 애플리케이션의 상태나 지표를 확인합니다. Dropwizard 프레임워크는 /healthcheck 및 /metrics를 통해 동일한 기능을 구현합니다.

다음은 /metrics를 통한 Spring Boot 애플리케이션의 결과 출력입니다.


  {
  "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. 민감한 정보 보호

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


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

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

위 내용은 Java API 사용을 위한 5가지 팁의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.