2011-10-03 56 views
0

我有一个音乐商店程序,有一个测试课程,一个Clerk课程(处理输入),一个Stocker课程(分配CD的可用性和价格),Storehouse(具有所有可用的CD),然后CD(有价格和名字)。我想添加一个选项让管理员通过输入安全代码添加CD。我想要做的是这样的:当秘书要求某人的订单(他们想要哪些CD)时,您可以输入字符串“密码”,这将允许您输入一个字符串,仓库将检查该字符串是否合格,那么经理就可以添加CD。为了让代码的一个粗略的想法:设计:在哪里可以放置经理选项?

public class CounterPerson(){ 
... 
    System.out.println("Hello. Indicate how many CDs you want"); 
    System.out.println("You can also type password to add parts. "); 
    System.out.println("Here is what is available. "); 
    System.out.println(storeHouse); 
    String security = new String(); 
    if(in.next().equals("password")){ 
     System.out.println("Now type the password: "); 
     security = in.next(); 
     StoreHouse.addCD(security); 
    } 
    else{ 

然后在仓库类:

public void addCD(String security){ 
if(checkSecure(security)){ 
System.out.println("You can add CDs now. Specify a name and quantity"); 
... 
} 
else{ 
System.out.println("You are not authorized."); 
} 
} 

private boolean check(String security){ 
boolean secure = false; 
if(security.equals("blahblah123"){ secure = true }; 
return secure; 
} 

我的问题:这是很好的(安全)的设计?如果不是,怎么样?

编辑:如果这是不明确的,Stockhouse由斯托克类也访问(这就是他得到的光盘从)

回答

1

它永远不会依赖于硬编码的常量是个好主意验证安全性。在这种情况下,“blahblah123”不会太难从你的编译类逆向工程。

您应该考虑系统的要求以及您需要的“安全”。每个用户都应该拥有自己的密码吗?有没有人人使用的通用密码?你想记录用户进行操作吗? 如果您需要区分用户,帐户是如何创建的?例如,您可能需要一个管理“控制台”来执行此操作,并将数据库中的密码加密。

您可以在几篇文章中获得一些最佳做法,甚至可以在SOverflow中获得。

对不起,给你提出的问题比答案还多;)

+0

好吧,我可以做一个String s =“blahblah123”。但是安全检查的位置呢? – user977036

+0

这并不能真正解决您的问题。作为一个经验法则,请确保您的程序中的密码不会以明文形式显示在任何地方。它应该在其他地方加密存储(如数据库等)。 – pcalcao

+0

好的。但除此之外,密码检查方法在我的程序中的位置呢?编辑:假设每个人都有一个密码 – user977036

相关问题