Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何限制textview接受某些或所有特殊字符?_Java_Android_Sqlite_Sql Injection - Fatal编程技术网

Java 如何限制textview接受某些或所有特殊字符?

Java 如何限制textview接受某些或所有特殊字符?,java,android,sqlite,sql-injection,Java,Android,Sqlite,Sql Injection,我想知道是否有一种方法可以限制用户输入特殊字符,用户只能输入a-z和0-9个字符,并防止在Android中注入任何SQL?这里的最佳实践是什么 谢谢。对于编辑文本,您可以添加侦听器 在onTextChanged()或posterextchanged()中,您可以获取文本并删除不需要的字符,为了简单起见,您可以使用rejex。您可以使用输入过滤器来验证用户在编辑文本中输入的内容 当缓冲区要替换范围时调用此方法 dstart…dest的dend与范围开始…结束的新文本 来源。返回要放置的字符序列 相

我想知道是否有一种方法可以限制用户输入特殊字符,用户只能输入a-z和0-9个字符,并防止在Android中注入任何SQL?这里的最佳实践是什么


谢谢。

对于编辑文本,您可以添加侦听器

onTextChanged()
posterextchanged()
中,您可以获取文本并删除不需要的字符,为了简单起见,您可以使用rejex。

您可以使用
输入过滤器来验证用户在
编辑文本中输入的内容

当缓冲区要替换范围时调用此方法 dstart…dest的dend与范围开始…结束的新文本 来源。返回要放置的字符序列 相反,如果合适,则包含空字符串,或者为空 接受原替换件

例如,像这样:

InputFilter filter = new InputFilter()
{
    @Override
    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend)
    {
        if (source.toString().contains("'"))
            return "";
        else
            return null; // Accept original replacement.
    }

};

editText.setFilters(new InputFilter[] { filter });

然而,这将是避免SQL注入的一种非常糟糕的方法。最好改为在数据层中使用。

您可以使用带有以下xml选项的
EditText

<EditText 
  android:inputType="text" 
  android:digits="0123456789qwertzuiopasdfghjklyxcvbnm" 
  android:hint="Only letters, digits allowed"/>


尽管请记住,如果您正确使用了
SQLitedatabase
的查询方法,它会自动执行所有SQL注入操作。

您有3个答案,请选择对您帮助最大的一个。
<EditText 
  android:inputType="text" 
  android:digits="0123456789qwertzuiopasdfghjklyxcvbnm" 
  android:hint="Only letters, digits allowed"/>