我有一个音乐商店程序,其中有一个测试类,一个办事员类(负责输入),一个Stocker类(分配CD的可用性和价格),Storehouse (有所有可用的CD),然后是CD(有一个价格和名称)。我想添加一个选项,让经理通过输入安全代码来添加CD。我的想法是这样的:当办事员询问某人的订单(他们想要哪张CD)时,您可以输入字符串"password“,这将允许您输入一个字符串,Storehouse将检查该字符串是否符合条件,然后经理才能添加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{然后在StoreHouse类中:
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;
}我的问题是:这是好的(安全的)设计吗?若否,原因为何?
编辑:如果这一点不清楚,Stocker类也可以访问Stockhouse (这就是他获得CD的地方)
发布于 2011-10-04 00:51:28
依靠硬编码的常量来验证安全性从来都不是一个好主意。在这种情况下,从已编译的类对"blahblah123“进行逆向工程并不难。
你应该考虑你的系统的需求是什么,以及你需要它有多“安全”。每个用户都应该有自己的密码吗?是否有每个人都使用的通用密码?是否要将执行操作的用户记入日志?如果需要区分用户,账号是如何创建的?例如,您可能需要一个管理“控制台”来完成此操作,并在数据库中对密码进行加密。
您可以在几篇文章中获得一些最佳实践,甚至在SOverflow中也是如此。
很抱歉给你留下的问题比答案多;)
https://stackoverflow.com/questions/7637822
复制相似问题