Java安全编码:糟糕的在线建议和令人困惑的APIs
对于程序员和软件开发人员来说,网络论坛提供了一个交流知识和寻找具体编码难题答案的好地方。遗憾的是,他们并不总是准确信息的来源。

弗吉尼亚理工大学的一组研究人员分析了数百篇关于Stack Overflow的文章,(Stack Overflow是一个很受欢迎的开发者论坛或者说Q&A网站)发现许多提供答案的开发人员并没有意识到编码选项的安全含义,并显示出了缺乏网络安全培训。
他们发现的另一件事是,有时,最热门的帖子或答案包含了一些不安全的建议,这些建议会在软件中引入安全漏洞,而正确的修复程序不那么受欢迎,也不容易看到,因为它们是用户提供的,其信誉分数较低。
因此,提问者和回答者之间的社会动态肯定会对人们的安全选择产生影响。
获得正确的安全性
研究人员集中研究与Java安全性相关的帖子,从软件工程和安全角度考虑,针对的是Spring Security的问题上发表的文章,Spring Security是一个第三方Java框架,为企业应用程序提供身份验证、授权和其他安全特性。
Spring Security旨在促进安全编码,但很明显,许多程序员发现它的APIs过于复杂,文档记录不足,运行时系统的错误报告令人困惑。
“此外,多语言支持获取数据的能力相当弱。在安全应用程序中,多语言的情况是很常见的,因为通常数据是用一种编程语言加密的(比如:Python)并在另一个编程语言解密(例如:Java)。这些问题会严重阻碍开发人员的生产力。”
开发人员在花太多时间解决APIs的正确用法时常感到沮丧,并且常常选择了完全不安全的修补程序,比如使用过时的加密哈希函数,禁用了跨站点请求伪造保护,信任了HTTPS验证中的所有证书,或者使用了过时的通信协议。
研究人员指出:“这些糟糕的编码实践,如果在生产代码中使用,将严重损害软件产品的安全性。”
建议每个人都参与
“这项工作的意义在于,我们为大量令人担忧的安全编码问题提供了经验证据,而这些问题之前并没有被报道过。这些问题是由于各种原因,包括企业安全应用的快速增长,软件开发人员缺乏安全培训,以及设计了糟糕的安全库,”研究人员指出。
他们建议设计人员删除或弃用弱安全性的APIs,设计简化的APIs,并在默认情况下实现强大的安全性防御,并设计干净且有帮助的错误报告接口,其中还包括可能的根本原因和解决方案。
另一方面,开发人员绝对应该需要安全检查,并进行安全测试,以检查实现的功能是否如预期的那样工作。在Stack Overflow和其他类似的社区网站和论坛上流行和接受的答案应该像一粒盐,如果可能的话,它们的准确性应该是独立的。
最近的相关研究显示,排名靠前但不够充分的编程Web教程也将漏洞引入了软件。
最后,工具生成器应该考虑使它们能够自动诊断安全错误,并建议安全补丁或解决方案。
“构建漏洞防御技术,比较同级应用程序使用相同系列的APIs来推断和警告潜在的错误使用。探索检查和加强安全性相关注释、代码和配置之间的语义一致性的方法。构建新的方法来转换声明性安全性和编程式安全性的实现,”研究人员总结道。
小编总结:当程序员或者软件开发者在编码遇到难题时,找网络论坛,或寻大神求助,或自己探索都是可行的,但一定要意识到编码选项的安全性,选择了错误的编码,将严重影响企业软件产品,因此,安全编码,人人有责。
本文由阿里聚安全编译,原文链接:https://www.helpnetsecurity.com/2017/10/03/secure-coding-java/
Java安全编码:糟糕的在线建议和令人困惑的APIs的更多相关文章
- Java Script 编码规范【转】
Java Script 编码规范 以下文档大多来自: Google JavaScript 编码规范指南 Idiomatic 风格 参考规范 ECMAScript 5.1 注解版 EcmaScript ...
- 【JAVA编码专题】 JAVA字符编码系列三:Java应用中的编码问题
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- 在JAVA中记录日志的十个小建议
JAVA日志管理既是一门科学,又是一门艺术.科学的部分是指了解写日志的工具以及其API,而选择日志的格式,消息的格式,日志记录的内容,哪种消息对应于哪一种日志级别,则完全是基于经验.从过去的实践证明, ...
- java字符编码详解
引用自:http://blog.csdn.net/jerry_bj/article/details/5714745 GBK.GB2312.iso-8859-1之间的区别 GB2312,由中华人民共和国 ...
- JAVA字符编码三:Java应用中的编码问题
第三篇:JAVA字符编码系列三:Java应用中的编码问题 这部分采用重用机制,引用一篇文章来完整本部分目标. 来源: Eceel东西在线 问题研究--字符集编码 地址:http://china.e ...
- Java安全编码之用户输入
0x00 安全引言 1.传统Web应用与新兴移动应用 (1)传统Web应用:浏览器 HTTP 服务器(2)新兴移动应用:APP HTTP 服务器 从安全角度看,传统Web应用与新兴移动应用没有本质区别 ...
- 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- 关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
我们最初学习计算机的时候,都学过ASCII编码. 但是为了表示各种各样的语言,在计算机技术的发展过程中,逐渐出现了很多不同标准的编码格式, 重要的有Unicode.UTF.ISO-8859-1和中国人 ...
- Java 字符编码(一)Unicode 字符编码
Java 字符编码(一)Unicode 字符编码 Unicode(http://www.unicode.org/versions/#TUS_Latest_Version) 是一个编码方案,说白了希望给 ...
随机推荐
- 切面编程AOP之KingAOP
1. 在Nuget上安装KingAOP 2. 创建一个新的类 public class Test : IDynamicMetaObjectProvider { public DynamicMetaOb ...
- Cannot attach medium 'D:\program\VirtualBox\VBoxGuestAdditions.iso' {}: medium is already associated with the current state of machine uuid {}返回 代码: VBOX_E_OBJECT_IN_USE (0x80BB000C)
详细的错误信息如下: Cannot attach medium 'D:\program\VirtualBox\VBoxGuestAdditions.iso' {83b35b10-8fa2-4b81-8 ...
- Python的安装图解
安装步骤: 第一步:打开Python官网:http://www.python.org 第二步:点击Download,下载windows版本 第三步:选择要下载的版本第四步:安装到指定的位置第五步:验证 ...
- MyBatis updateByExample和updateByExampleSelective的区别
大家都用过mybatis generator来生产数据库的xml文件,但是关于updateByExample和updateByExampleSelective的区别我之前一直分不太清楚. 如果分不清楚 ...
- Codeforces 524 解题报告
打的很快乐的一次比赛hiahiahia, 才A掉4题rating就涨了100+ 距离比赛\(3\)天了, 由于博主实在太颓, 又补掉了\(E\)题, 到现在才发解题报告 A. 语法题, 读入输出就行了 ...
- [精华][推荐]CAS SSO实现单点登录框架学习源码
1.通过下载稳定版本的方式下载cas的相关源码包,如下: 直接选择4.2.1的稳定代码即可 2.我们项目中的版本版本使用maven apereo远程库去下载 通过远程maven库下载cas-serve ...
- 安装composer Failed to decode zlib stream 问题解决方法
https://getcomposer.org/download/ 页面下载最新版本 composer.phar 放到php.exe 页面下.创建一个.bat文件,存入下面内容 @ECHO OFF p ...
- LoadRunner录制脚本时没有响应——无法启动浏览器问题总结
1.ie浏览器去掉启用第三方浏览器扩展 2.loadrunner11 键盘F4,在browser Emulation点击change,在弹出的提示框中Browser version 选择8.0,pla ...
- HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式
HttpHelpers类普通GET和POST方式,带Cookie和带证书验证模式 参考路径:https://www.cnblogs.com/splendidme/archive/2011/09/14/ ...
- Java--druidAPI查询
maven依赖<dependency> <groupId>in.zapr.druid</groupId> <artifactId>druidry< ...