JSP如何防范SQL注入攻击

发表于:2009-3-16 10:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:网络转载

  2、正则表达式

  2.1、检测SQL meta-characters的正则表达式 /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix

  2.2、修正检测SQL meta-characters的正则表达式 /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-) 54ne.com

  |(\%3B)|(:))/i

  2.3、典型的 SQL 注入攻击的正则表达式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\ 中国网管联盟

  %52))/ix

  2.4、检测SQL注入,UNION查询关键字的正则表达式 /((\%27)|(\'))union/ix(\%27)|(\') - 单

  引号和它的hex等值  union - union关键字。

  2.5、检测MS SQL Server SQL注入攻击的正则表达式 /exec(\s|\+)+(s|x)p\w+/ix

  3、字符串过滤

  public static String filterContent(String content){

  String flt ="'|and|exec|insert|select|delete|update|count|*|%

  |chr|mid|master|truncate|char|declare|; |or|-|+|,";

  Stringfilter[] = flt.split("|");

  for(int i=0; i {

  content.replace(filter[i], "");

  }

  return content;

  }

  4、不安全字符屏蔽

  本部分采用js来屏蔽,起的作用很小,这样用屏蔽关键字的方法虽然有一定作用,但是在实际应用中这些 SQL的关键字也可能成为真正的查询关键字,到那是被你屏蔽了那用户不是不能正常的使用了。 只要在代码规范上下点功夫就可以了。

  凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement就可以 ,切记不要用拼接字符串的方法就可以了。

  功能介绍:检查是否含有"'","\\","/"

  参数说明:要检查的字符串

  返回值:0:是 1:不是

  函数名是

  function check(a)

  {

  return 1;

  fibdn = new Array ("'" ,"\\","/");

  i=fibdn.length;

  j=a.length;

  for (ii=0; ii { for (jj=0; jj

  { temp1=a.charAt(jj);

  temp2=fibdn[ii];

  if (tem'; p1==temp2)

  { return 0; }

  }

  }

  return 1;

  }

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号