在开发网站时,您通常会在客户端和服务器端进行验证(因为用户只需检查页面并更改html / javascript)。
但是在开发Android应用程序时,用户是否可以操作前端代码?
我觉得答案是否定的,因为Java不是像javascript这样的解释语言(意味着用户无法看到源代码来操纵它)。但与此同时,Java可以被反编译。
我希望100%确定我可以在客户端进行所有验证,而不是在服务器端进行一些重复检查。
答案 0 :(得分:0)
我建议在Android应用程序中进行输入处理验证,通常在表单按钮的onClick函数中。
emailEditText = (EditText) findViewById(R.id.editText_email);
passEditText = (EditText) findViewById(R.id.editText_password);
findViewById(R.id.btn_signup).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
final String email = emailEditText.getText().toString();
if (!isValidEmail(email)) {
emailEditText.setError("Invalid Email");
}
final String pass = passEditText.getText().toString();
if (!isValidPassword(pass)) {
passEditText.setError("Invalid Password");
}
}
});
}
// validating email id
private boolean isValidEmail(String email) {
String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
// validating password with retype password
private boolean isValidPassword(String pass) {
if (pass != null && pass.length() > 6) {
return true;
}
return false;
}
我发现正则表达式是最好的方法。
前端代码无法在android中操作,因为每个应用程序都被编译成apk(关闭设备),然后安装在设备上并运行。但是,可以修改进出设备的网络流量,但这需要一个有根设备,但是简单的安全策略,比如使用https:和制作精良的json是一种帮助防止这种情况的方法。