应该在哪里为Android应用程序进行用户输入验证?

时间:2015-01-22 17:55:13

标签: android validation

在开发网站时,您通常会在客户端和服务器端进行验证(因为用户只需检查页面并更改html / javascript)。

但是在开发Android应用程序时,用户是否可以操作前端代码?

我觉得答案是否定的,因为Java不是像javascript这样的解释语言(意味着用户无法看到源代码来操纵它)。但与此同时,Java可以被反编译。

我希望100%确定我可以在客户端进行所有验证,而不是在服务器端进行一些重复检查。

1 个答案:

答案 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是一种帮助防止这种情况的方法。