我在我的网络应用程序中做的事情可以被轻易攻击或破解吗?

n00*_*kie 0 java weblogic struts2

我正在向用户展示一些考试.用户在通过此考试之前不得进入实际网站.但是,有些用户可以选择绕过考试,直到某个日期(比如当前日期的月份).所以这些用户有一个月的窗口参加考试.在此之前,他们可以点击考试页面上的"继续"进入该网站.

我的逻辑:当普通用户点击考试表单页面上的提交时,我正在完成所有逻辑并向数据库提交信息.当这些"特殊"用户点击继续时,我将只是在'didPassExam()'方法中加密'true',如果它们仍然在那个月的窗口中.

我的问题是:检查用户点击了哪个按钮我正在执行以下操作(Struts 2代码)

private String submit;

public void setSubmit(String submit) {
    this.submit = submit;
}
Run Code Online (Sandbox Code Playgroud)

在JSP中:

 <s:submit name="submit" value="Submit" />

 <s:submit name="submit" value="Proceed" />
Run Code Online (Sandbox Code Playgroud)

所以基本上当用户点击一个按钮时,我的动作类将知道点击了哪个按钮.但是,有些黑客可以故意将"提交"按钮的值更改为"继续",然后绕过考试,即使是普通用户也是如此?

有人会以不同的,更安全的方式做到这一点吗?

dwc*_*dwc 8

是的,任何用户都可以传递特殊的"继续"并获得访问权限.

既然你可以(并且确实)已经告诉用户类型之间的区别,你应该根据它在服务器上验证他们的按钮.始终可以绕过客户端检查.


JP *_*oto 7

通常,您不应该信任来自客户端的输入.您应该在服务器端验证特定用户是否有权跳过考试.据推测,您知道用户是谁来自登录过程,并且您知道确定他们是否可以跳过考试的正确逻辑.所以没有理由相信客户告诉你的.