我正在寻找关于工具/方法的建议可以用来确保,在java源代码中,敏感信息(如用户密码)不会被意外记录/打印输出。
答案 0 :(得分:1)
您可以为关键变量及其代码行为指定一些关键字。 之后,您需要安装 findbugs插件,然后您可以创建自定义错误检测器。 在发布应用程序之前,请运行findbugs。它检查错误并找到它们(如果存在)。
这里有一些例子:
http://lifelongprogrammer.blogspot.com.tr/2013/05/extending-findbugs-creating-our.html http://www.danielschneller.com/2007/04/findbugs-writing-custom-detectors-part.html http://findbugs.sourceforge.net/
保护代码的任何其他方法,您必须 obfusticate 您的代码。 (不打印输出或日志,以保护您的源代码)
祝你好运。答案 1 :(得分:0)
你应该使用某种静态分析工具。并检查他们的规则集。
当然,Jtest(商业工具)提供了这种功能。您可以查看FindBugs甚至SonarQube。
当然,这些工具并不完美,也无法检测到。将尽可能地尽力帮助。
但对于100%,最好的是四只眼睛的规则。其他开发人员的代码审查可能有所帮助。静态分析工具应该被视为所谓的愚蠢错误的监护人。可以定义一个愚蠢的错误,当被指出时是明显的。每个人都这样做,因此在团队中进行审查和一般意识的事件有可能错过一些东西。
答案 2 :(得分:0)
从代码的角度来看,您希望尽可能合理地划分区域。在静态方面,应该最小化可以访问敏感信息的代码区域。更重要的是,应尽量减少数据范围。特别是没有全局变量。没有记录。 ("但是日志记录是特殊的!"不,它不是。)IIRC,"通过测试引导的面向对象的软件越来越多"由Freeman和Pryce谈到他们所谓的"审计"相当静态的临时记录器。
这些天每个人都在测试。相关的测试技术是使用敏感数据的已知值,并机械搜索特定序列的文件和网络通信。
如果数据格式定义明确,比如信用卡号,则可以将此数据从文本输出中清除到日志/审核文件。这不是你想要依赖的东西,但它可以拯救你。
答案 3 :(得分:-1)
没有可以自动化的工具。
相反,您需要为代码审查和程序员的意识等方面制定适当的程序
只是好奇,你怎么想象这样的工具工作?如何神奇地检测到某些东西是敏感的,在多大程度上,以及是否允许使用它?