java - 硬编码身份验证更容易调试

标签 java security debugging

为了使调试更容易,我在我的应用程序中编写了一个身份验证代码,例如:

User admin = new User("admin", "pw");
currentUser = admin;

我很懒惰,不想每次发布新版本时都删除这些行,所以我创建了一个带有 Debug-Flag 的属性文件。当标志设置为“true”时,应用程序以 Debug模式启动而无需身份验证,否则显示登录。

但现在我担心的是,获得管理员访问权限非常容易。 你会如何解决这个问题?

亲切的问候 Storm

最佳答案

解决问题的方法就是不要那样做!

这会导致几个问题:

  • 如您所说,太容易获得管理员权限
  • 不正确的应用程序行为或错误的调试信息。您可能以管理员身份进行测试和调试,但您的用户肯定不是管理员!
  • 它本身就是另一条控制路径,必须围绕它进行规划、编码和测试

更好的解决方案可能是在您的 DEV 系统上使用通用的管理员登录名和密码。这样您就可以自动输入或将其编码到您的测试中。普通用户的通用登录也是一个好主意,这样您就可以轻松地进行测试。

根据您正在进行的测试和调试类型,您是否可以编写自动化测试(可能使用 JUnit 和 Selenium)来测试您的应用程序?您还可以在 Debug模式下针对您的应用程序实例运行测试。测试本身会处理普通的设置和登录步骤,因此您可以专注于需要调试的事情。

关于java - 硬编码身份验证更容易调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8947019/

相关文章:

java - 在 HashMap 中向 ArrayList 添加条目

java - 如何使用 @Parameters 在运行之间缓存 JUnit 类字段

asp.net-mvc - 在查询字符串中使用 GUID 以确保安全

javascript - 如何从 jQuery 对象文字正确调用服务器端 ASP.NET 并将数据返回给 jQuery

c++ - 尝试在Visual Studio 2012中编译时,符号加载错误

Android 中的 Java DateFormat.SHORT 未按预期工作

java - 在 fragment 中创建 android 对话框而不是直接由 Activity 创建的原因是什么?

c# - WCF 服务和 POODLE 攻击

debugging - Windows 8 Phone 上的 USB 远程调试

c# - 调试在 Visual Studio 外部运行的应用程序