我正在使用AJAX控制器。这是工作流程:
Controller.java
@RequestMapping(value = "api/user/{user}", produces = "application/json", method = RequestMethod.GET)
public @ResponseBody UserData execute(@PathVariable(value = "user") String user) {
if(validator.isValid(user)) {
return service.getUserData(user);
} else {
throw new ResourceNotFoundException(INVALID_USER_FORMAT);
}
的Javascript
// obtain user from text input
var user = $('#user_input').val();
$.getJSON("/api/user/"+user, function (data) {
// ...
});
目前,我已经在我的控制器中完成了验证,而不是在Javascript中。例如,我可以从控制器中删除它,只需在Javascript中使用它,如下所示:
// obtain user from text input
var user = $('#user_input').val();
if(validate(asin)) {
$.getJSON("/api/user/"+user, function (data) {
// ...
});
}
问题
什么是更好的,什么是更好的模式?在Controller中进行验证,或者在Javascript中进行验证?
答案 0 :(得分:0)
最好是双方进行验证,但客户端验证是必须的,客户端验证将通过限制无效格式的数据来节省大量服务器命中。
答案 1 :(得分:0)
始终首选验证双方。
安全原因需要服务器端验证。用户不必总是通过客户端UI发送请求。一些恶意用户可以使用curl请求[例如。 postman]和任何用于请求操作的[ex JavaScript,angular etc]的脚本。
所以总是假设客户端可以发送任何你应该在服务器端验证它的东西。