【问题标题】:Appscan Issues: Authentication.Credentials.UnprotectedAppscan 问题:Authentication.Credentials.Unprotected
【发布时间】:2016-01-06 16:32:09
【问题描述】:

Appscan 工具在我的应用程序中使用以下代码段时报告问题:

con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","oracle");

问题类型为Authentication.Credentials.Unprotected

有人可以建议我解决这类问题的方法吗?

【问题讨论】:

    标签: java


    【解决方案1】:

    Appscan 报告您的凭据为纯文本格式的问题。
    您应该隐藏凭据。一种方法是从属性文件中读取凭据,如下所示:

    Properties props = new Properties();
    props.load(new FileInputStream("credentials.txt"));
    con = DriverManager.getConnection(props.getProperty("connectionUrl"),
                                      props.getProperty("user"),
                                      props.getProperty("password"));
    

    credentials.txt 看起来像这样:

    connectionUrl=jdbc:oracle:thin:@localhost:1521:xe
    user=system
    password=oracle
    

    如果那是您的真实凭据,那么您现在应该更改它们。
    如果您想更安全,那么您还应该加密文件中的凭据并在访问数据库之前对其进行解密。

    我希望它有所帮助。祝你有美好的一天。

    【讨论】:

    • 感谢您的回复。正如您所说,凭据已放置在属性文件中,并且应用程序从其中提取值。即使这样,AppScan 工具也会报告错误。你能给我推荐一个代码 sn-p 来解释如何在访问数据库之前在文件中加密和解密它们吗?
    • 您可以在此处找到凭证加密的示例:stackoverflow.com/q/339004/2162470 您应该选择最适合您需要的加密。
    • 感谢您的快速回复。我已经浏览了您提到的链接。我仍然无法理解那里的内容。他们正在使用一些高级术语,例如 WebServices 等,因为我是 IT 行业的初学者,所以我对此一无所知。能不能简单点让初学者也能理解?提前感谢您的支持。
    • 我为你找到了更好的教程:wikijava.org/wiki/Secret_Key_Cryptography_Tutorial
    • 非常感谢您的帮助..!!我看到了教程,似乎对我的要求很有用。我创建了一个简单项目并运行了这段代码,并且运行良好。我的最后一个问题是我必须在哪里加密以及我需要在哪里解密。我的应用程序具有以下方式的代码。 private Connection getConnection(DBFactory.DriverType jdbcDriverType, Properties dbProps) { //从属性文件中获取 URL、用户名、密码 Connection conn = java.sql.DriverManager.getConnection(url, props);请帮帮我..!!
    猜你喜欢
    • 1970-01-01
    • 2017-03-23
    • 2018-12-27
    • 2017-01-26
    • 2015-09-26
    • 2014-09-24
    • 2016-09-23
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多