个人做流量大的网站,美工工资一般多少,app和手机网站的区别是什么,番禺人才网单位招考本文介绍了一些关于Java API安全和性能方面的简单易用的技巧#xff0c;其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议。 程序员都喜欢使用API#xff01;例如为app应用构建API或作为微服务架构体系的一部分。当然#xff0c;使用API的前提是能让…本文介绍了一些关于Java API安全和性能方面的简单易用的技巧其中包括保证API Key安全和开发Web Service方面中在框架方面选择的一些建议。 程序员都喜欢使用API例如为app应用构建API或作为微服务架构体系的一部分。当然使用API的前提是能让你的工作变得更轻松。为了简化开发和提高工作效率所作出的努力有时也意味着需要寻找新的类库或者过程或者减少过程。对于很多开发团队来说对于其APP和API进行管理认证和访问控制要耗费很多的时间因此我们需想分享一些技巧它们能节约你的时间减少代码编写量并能让你的应用更加安全和易于维护。 先介绍下本文提及的背景知识Okta是一个基于REST、JSON API构建的Java应用使用Spring框架构建。我们公司的应用是保存用户的身份凭证和其他公司的敏感数据所以对我们来说安全是最重要的。因此我对这些技巧的第一个要求是它们能帮助令到你的Java应用更安全。 这些建议应该是任何类型的Java应用都是通用的。它们会帮助你更快地编写代码但代码量更少了同时又更安全这真的是三赢的结果 #1. 不要自己去实现安全框架说真的不要尝试自己去实现安全方面的代码这太难了。 几乎每个人都知道避免去实现加密等算法。同样道理你的应用的安全栈的其余部分也是一样可能需要花费很大得到的风险也很大。你很可能会犯一些错误。自1999年以来已经有89373个CVE(公共漏洞和暴露)发布了。而其中公开的大部分的发现者都是那些非常聪明的人。 你可能认为处理一个简单的用例例如验证用户的密码是很简单的事情——你所做的一切只是比较一对字符串。这样想就错了。你需要验证密码的哈希值审核尝试登录的次数减少针对字典的攻击这只是冰山一角。你最好的选择是使用现有的成熟的库或框架例如Apache的Shiro或者SpringSecurity,让这些框架去处理各类复杂的安全问题。 #2. Use TLS, Always! 永远使用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.port8443
server.ssl.key-storeclasspath:keystore.jks
server.ssl.key-store-passwordsecret
server.ssl.key-passwordanother-secret复制代码#3. 使用Spring Boot创建Web Service Spring Boot是Spring平台的一个简化能让编写Spring应用变得很简单例如能用很少的代码编写《app应用中考虑的12个因素》一文中提到的观点。如果你还在使用建War包的方式编码那么Spring Boot值得你去学习。使用Spring Boot可以复杂的、不同类型的应用例如可以使用简单的注解EnableResourceServer就搭建一个OAuth资源服务器或者通过简单的属性改变其端口 server.port 8090复制代码如果不喜欢使用SpringBoot,那么可以使用Dropwizard去搭建JAX-RS技术栈。 #4. 监视应用和性能指标 如果无任何数据的情况下是很难发现程序的错误的。Spring Boot通过使用Actuator,能让收集指标数据变得容易只需要在应用中增加一个依赖如下 dependency
groupIdorg.springframework.boot/groupId
artifactIdspring-boot-starter-actuator/artifactId
/dependency
Java学习交流QQ群589809992 我们一起学Java复制代码然后就可以通过浏览器中在访问应用地址后输入/health 或者/metrics去检查应用的健康情况或者指标。Dropwizard框架通过/healthcheck和/metrics实现同样的功能。 下面是Spring Boot应用通过/metrics 输出的结果 {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 ur,go-rwx ~/.okta/okta.yaml复制代码如果你正为使用你的APP的用户创建API记得提醒他们如果无设置好权限的话.SSH的忽文件是放在你的~/.ssh目录下如果无设置好权限的话。GitHub 把它们放在“危险区域”以提醒用户这是十分有用的。