问题描述
在 PHP 中,我们有 santize 以确保 String 是安全的。 Java 有什么类似的东西。 我知道 PreparedStatement 。但这对我的项目没有帮助。 是否有一些东西只检查 String 中的字母。
query = "SELECT Bill_No,No,Item,Count,Rate,GST,Net,Date,Time,Manager FROM bill WHERE Manager = '"+Manager_str+"'; ";
//This is definitely insecure
解决方法
Character
类有一个方法 isAlphabetic
,您可以通过循环输入字符串中的字符来使用它。
for(char c : query.toCharArray()) {
if(!Character.isAlphabetic(c)) {
return false;
}
}
return true;
如果您使用的是 Java 8 或更高版本,则可以使用流:
return query.chars().allMatch(Character::isAlphabetic);
,
试试这个。
public static void main(String args[]) {
String str="sadahkk";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
str="";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
str="sada5hkk";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
str="<alert>";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
str="-- sadahkk";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
str="@fgfg";
System.out.println("str :"+str +",isAlphabetsOnly:"+isAlphabetsOnly(str));
}
public static boolean isAlphabetsOnly(String str ) {
return ((!str.equals(""))
&& (str != null)
&& (str.matches("^[a-zA-Z]*$")));
}
================================================ ========
输出如下
str :sadahkk,isAlphabetsOnly:true
str :,isAlphabetsOnly:false
str :sada5hkk,isAlphabetsOnly:false
str :,isAlphabetsOnly:false
str :-- sadahkk,isAlphabetsOnly:false
str :@fgfg,isAlphabetsOnly:false