首页 > 编程语言 >面向接口编程的一个小例子

面向接口编程的一个小例子

时间:2023-02-14 14:33:04浏览次数:44  
标签:index String 编程 接口 flag boolean 面向 sql public


注:本文重在强调面向接口编程,而非如何防止SQL注入。

今天,在做项目时,需要增加对SQL语句的检测功能,即防止SQL注入的问题。

首先想到的是写一个工具类来完成SQL检测功能:

public class 
SqlCheckUtil{





public static final String[] KEY_WORDS = { "insert", "delete", "update","select", "or", "and" };





/**

* 检测sql语句是否合法

*

* @param sql

* @return

*/

public static boolean
checkSql(String sql) {

boolean flag = true;

int size = KEY_WORDS.length;



for (int index = 0; index < size; index++) {

if (sql.contains(KEY_WORDS[index])) {

flag = false;

break;

}

}



return flag;

}




}

调用方式:

String sql ="passwd = 123 or 2 = 2";




boolean flag= SqlCheckUtil.checkSql(sql);

----------------------------------------------------------------------------------------------------------------------------------------------------------

后来想到这个功能,也可以使用接口的方式来实现:

/**

* sql语句检测接口:检测sql语句是否合法。

*

* @author leiwen

*

*/

public interface
SqlCheck {

/**

* 检测sql语句是否合法

*

* @param sql

* 需要检查的sql语句

* @return 合法返回true,不合法返回false.

*/

public boolean checkSql(String sql);

}




public class
SqlCheckImpl implements SqlCheck {




public static final String[] KEY_WORDS = { "insert", "delete", "update",

"select", "or", "and" };



/**

* 检测sql语句是否合法

*

* @param sql

* @return

*/

public boolean checkSql(String sql) {

boolean flag = true;

int size = KEY_WORDS.length;



for (int index = 0; index < size; index++) {

if (sql.contains(KEY_WORDS[index])) {

flag = false;

break;

}

}



return flag;

}

}

调用方式:

String sql ="passwd = 123 or 2 = 2";




SqlCheck sqlChek = new SqlCheckImpl();




sqlCheck.checkSql(sql);

思考:这两种方法各有什么好处呢?

------------------------------------------------------------------------------------------------------------------------------------------

以前,总想着能把自己学过的东西全面地总结一下,可是发现一个技术话题往往涉及到太多的问题,全面地分析远远超出自己的能力。

写吧,太难;不写,心又不甘。最终,还是决定以 小而实用的方式来写了。


标签:index,String,编程,接口,flag,boolean,面向,sql,public
From: https://blog.51cto.com/fansunion/6056801

相关文章