java正则表达式包含和不包含?js正则(以顿号分割,但是不包含括号内的顿号的正则表达式)

发布时间:2023-11-29 00:43:55
发布者:网友

大家好,感谢邀请,今天来为大家分享一下java正则表达式包含和不包含的问题,以及和js正则(以顿号分割,但是不包含括号内的顿号的正则表达式)的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

一、java如何防sql攻击

1、java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构,大部分的SQL注入已经挡住了,在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数。下面就举三个例子来说明一下:

2、采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可,如下所示:

3、Stringsql="select*fromuserswhereusername=?andpassword=?;PreparedStatementpreState=conn.prepareStatement(sql);preState.setString(1,userName);preState.setString(2,password);ResultSetrs=preState.executeQuery();...

4、采用正则表达式将包含有单引号('),分号(;)和注释符号(--)的语句给替换掉来防止SQL注入,如下所示:

5、publicstaticStringTransactSQLInjection(Stringstr)

6、returnstr.replaceAll(".*([';]+|(--)+).*","");

7、userName=TransactSQLInjection(userName);

8、password=TransactSQLInjection(password);

9、Stringsql="select*fromuserswhereusername='"+userName+"'andpassword='"+password+"'"

10、Statementsta=conn.createStatement();

11、ResultSetrs=sta.executeQuery(sql);

12、使用Hibernate框架的SQL注入防范Hibernate是目前使用最多的ORM框架,在JavaWeb开发中,很多时候不直接使用JDBC,而使用Hibernate来提高开发效率。

13、在Hibernate中,仍然不应该通过拼接HQL的方式,而应使用参数化的方式来防范SQL注入。有两种方式,一种仍然是使用JDBC一样的占位符“?”,但更好的方式是使用Hibernate的命名参数,例如检测用户名和密码是否正确,使用Hibernate可以写成如下:

14、StringqueryStr=“fromuserwhereusername=:username”+”password=:password”;

15、Listresult=session.createQuery(queryStr).setString("username",username).setString("password",password).list();

二、java怎么利用正则表达式,提取字符串

1、StringtestString="java怎么利用正则表达式从给定的字符串中取出匹配规则字符串";

2、Patternpattern=Pattern.compile("\\w+");

3、Matchermatcher=pattern.matcher(testString);

4、System.out.println(matcher.group());

三、js正则(以顿号分割,但是不包含括号内的顿号的正则表达式)

用java写了个,如果用别的语言的话自己替换,记得js的全局匹配貌似在后面得加一个g正则表达式就是"[^,]*" publicstaticvoidmain(String[]args){ Patternp=Pattern.compile("[^,]*"); Matcherm=p.matcher("aBC,English,Accout.Name123_abc,com.hot.sgp.afdsf"); while(m.find()){ System.err.print(m.group()+"\t"); } }

四、java如何防止sql注入

1、java防SQL注入,最简单的办法是杜绝SQL拼接,SQL注入攻击能得逞是因为在原有SQL语句中加入了新的逻辑,如果使用PreparedStatement来代替Statement来执行SQL语句,其后只是输入参数,SQL注入攻击手段将无效,这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构,大部分的SQL注入已经挡住了,在WEB层我们可以过滤用户的输入来防止SQL注入比如用Filter来过滤全局的表单参数

2、04importjavax.servlet.FilterChain;

3、05importjavax.servlet.FilterConfig;

4、06importjavax.servlet.ServletException;

5、07importjavax.servlet.ServletRequest;

6、08importjavax.servlet.ServletResponse;

7、09importjavax.servlet.http.HttpServletRequest;

8、10importjavax.servlet.http.HttpServletResponse;

9、12*通过Filter过滤器来防SQL注入攻击

10、15publicclassSQLFilterimplementsFilter{

11、16privateStringinj_str="'|and|exec|insert|select|delete|update|count|*|%

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

13、17protectedFilterConfigfilterConfig=null;

14、19*Shouldacharacterencodingspecifiedbytheclientbeignored?

15、21protectedbooleanignore=true;

16、22publicvoidinit(FilterConfigconfig)throwsServletException{

17、24this.inj_str=filterConfig.getInitParameter("keywords");

18、26publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,

19、27FilterChainchain)throwsIOException,ServletException{

20、28HttpServletRequestreq=(HttpServletRequest)request;

21、29HttpServletResponseres=(HttpServletResponse)response;

22、30Iteratorvalues=req.getParameterMap().values().iterator();//获取所有的表单参数

23、32String[]value=(String[])values.next();

24、33for(inti=0;i

25、35//TODO这里发现sql注入代码的业务逻辑代码

26、40chain.doFilter(request,response);

27、42publicbooleansql_inj(Stringstr)

28、44String[]inj_stra=inj_str.split("\\|");

29、45for(inti=0;i

30、47if(str.indexOf(""+inj_stra[i]+"")>=0)

31、百度搜索圈T社区(www.aiquanti.com)免费视频教程

文章分享结束,java正则表达式包含和不包含和js正则(以顿号分割,但是不包含括号内的顿号的正则表达式)的答案你都知道了吗?欢迎再次光临本站哦!

——————————————小炎智能写作工具可以帮您快速高效的创作原创优质内容,提高网站收录量和各大自媒体原创并获得推荐量,点击右上角即可注册使用

小炎智能写作