一种防止SQL注入的方法与流程

专利查询1月前  25

一种防止sql注入的方法
技术领域
:1.本发明涉及计算机
技术领域
:,具体的,本发明涉及一种防止sql注入的方法。
背景技术
::2.随着互联网技术的发展,对互联网产品服务器的性能要求越来越高,随着业务量规模的提升,恶意攻击系统所造成的损失也随之大幅提升。3.行业竞争者或黑客会对系统进行攻击,通过sql注入来改变原来的sql语句,获取移动转售系统中的用户信息,造成用户信息泄露;还可以通过sql注入来删除用户信息,使用户不能正常访问,导致用户流失。技术实现要素:4.为了克服现有技术的不足,本发明提供了一种防止sql注入的方法,以解决上述的技术问题。5.本发明解决其技术问题所采用的技术方法是:一种防止sql注入的方法,其改进之处在于:包括以下的步骤:s1、使用php脚本获取redis服务器中的所有ip,判断用户请求的ip是否存在于redis服务器中的ip中,若存在则报错,若不存在,则跳转至步骤s2;s2、使用php脚本获取用户登陆的帐号密码,判断用户的密码是否错误,若密码错误,则报错,若没有错误,则跳转至步骤s3;s3、使用php脚本调用函数preventingsqlinjectionattacks(),如果该函数返回假,则冻结sql注入的用户ip,程序终止;如果该函数返回真,则跳转至步骤s4;s4、使用php脚本操作mysql数据库,把用户的参数传入到mysql数据库中的占位符中,如果返回假,则直接冻结该用户ip,程序终止;如果返回真,则跳转至步骤s5;s5、使用php脚本中的mysql_real_escape_string函数过滤用户参数的内容,把用户的参数传入到mysql_real_escape_string函数中,如果返回假,则直接冻结用户ip;如果返回真,则跳转至步骤s6;s6、使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口中,如果接口返回假,则直接冻结该用户ip,程序终止;如果接口返回真,则跳转至步骤s7;s7、获取数据库数据,操作完成。6.在上述方法中,所述步骤s3中,使用php脚本调用函数preventingsqlinjectionattacks(),包括以下的步骤:7.使用php脚本获取用户传入的请求参数,调用函数preventingsqlinjectionattacks(),判断所述请求参数中是否带有“#”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;8.使用php脚本判断请求参数中是否带有“delete”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;9.使用php脚本判断请求参数中是否带有“update”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;10.使用php脚本判断请求参数中是否带有“select”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;11.使用php脚本判断请求参数中是否带有“alter”符号,如果有,则返回假,函数终止;如果没有,则跳转至下一步;12.使用php脚本判断请求参数中是否带有“insert”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;13.使用php脚本判断请求参数中是否带有“drop”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;14.使用php脚本判断请求参数中是否带有“table”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;15.使用php脚本判断请求参数中是否带有“from”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;16.使用php脚本判断请求参数中是否带有“where”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;17.使用php脚本判断请求参数中是否带有“leftjoin”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;18.使用php脚本判断请求参数中是否带有“rightjoin”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;19.使用php脚本判断请求参数中是否带有“innerjoin”符号,如果有,则返回假,函数终止,如果没有,则返回真。20.在上述方法中,所述步骤s3中,冻结sql注入的用户ip,包括以下的步骤:21.使用php脚本获取用户传入的请求参数,判断请求参数是否存在,如果不存在,程序终止,如果存在,则跳转至下一步;22.使用php脚本获取用户的ip,判断该用户ip是否存在,如果不存在,则程序终止,如果存在,则跳转至下一步;23.使用php脚本依次判断请求参数中是否带有“#”、“delete”、“update”、“select”、“alter”、“insert”、“drop”、“table”、“from”、“where”、“leftjoin”、“rightjoin”和“innerjoin”符号,如果没有,程序终止,如果有,则跳转至下一步;24.使用php脚本连接redis服务器,把用户的ip存入到redis列表中进行冻结,程序终止。25.在上述方法中,所述步骤s6,包括以下的步骤:26.使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口;27.使用springboot框架引入mybatis依赖;28.使用java接收传入参数,判断该传入参数是否存在,如果不存在,则报错,返回假,直接冻结该用户ip,程序终止,如果存在,则跳转至下一步骤;29.使用java连接mybatis,使用mybatis中的占位符技术判断所述传入参数是否存在sql注入,如果存在,则返回假,直接冻结该用户ip,接口终止,如果如果不存在,则返回真,操作成功。30.在上述方法中,所述步骤s7,包括以下的步骤:31.使用php脚本操作用户传进来的参数,组装成高安全的sql语句;32.使用php脚本连接mysql数据库,使用所述高安全的sql语句获取mysql数据库中的数据;33.使用php脚本将数据返回给用户,用户获取数据成功。34.本发明的有益效果是:在用户获取移动转售系统数据库数据的过程中,对防止sql注入实行了四层防护,对恶意通过sql注入的用户ip,不允许访问,保证用户可正常访问移动转售系统。附图说明35.附图1为本发明的一种防止sql注入的方法的流程图。具体实施方式36.下面结合附图和实施例对本发明进一步说明。37.以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。另外,专利中涉及到的所有联接/连接关系,并非单指构件直接相接,而是指可根据具体实施情况,通过添加或减少联接辅件,来组成更优的联接结构。本发明创造中的各个技术特征,在不互相矛盾冲突的前提下可以交互组合。38.参照图1,本发明的一种防止sql注入的方法,包括以下的步骤:39.s1、使用php脚本获取redis服务器中的所有ip,判断用户请求的ip是否存在于redis服务器中的ip中,redis服务器中的ip为此前有过sql注入的黑名单用户,若存在则报错‘检查到ip有过sql注入,禁止防问’,若不存在,则跳转至步骤s2;40.s2、使用php脚本获取用户登陆的帐号密码,判断用户的密码是否错误,若密码错误,则报错,若没有错误,则跳转至步骤s3;41.s3、进入第一层防护,使用php脚本调用函数preventingsqlinjectionattacks(),防止sql注入,如果该函数返回假,则冻结sql注入的用户ip,程序终止;如果该函数返回真,则跳转至步骤s4;42.具体的,使用php脚本调用函数preventingsqlinjectionattacks(),包括以下的步骤:43.使用php脚本获取用户传入的请求参数,调用函数preventingsqlinjectionattacks(),preventingsqlinjectionattacks()是一种对请求参数进行判断的函数,用于防止sql注入,判断所述请求参数中是否带有“#”符号,如果有,则返回错误内容“检查到sql注入,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;44.使用php脚本判断请求参数中是否带有“delete”符号,如果有,则返回错误内容“请求参数不能带有delete,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;45.使用php脚本判断请求参数中是否带有“update”符号,如果有,则返回错误内容“请求参数不能带有update,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;46.使用php脚本判断请求参数中是否带有“select”符号,如果有,则返回错误内容“请求参数不能带有select,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;47.使用php脚本判断请求参数中是否带有“alter”符号,如果有,则返回错误内容“请求参数不能带有alter,禁止访问”,返回假,函数终止;如果没有,则跳转至下一步;48.使用php脚本判断请求参数中是否带有“insert”符号,如果有,则返回错误内容“请求参数不能带有insert,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;49.使用php脚本判断请求参数中是否带有“drop”符号,如果有,则返回错误内容“请求参数不能带有drop,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;50.使用php脚本判断请求参数中是否带有“table”符号,如果有,则返回错误内容“请求参数不能带有table,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;51.使用php脚本判断请求参数中是否带有“from”符号,如果有,则返回错误内容“请求参数不能带有from,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;52.使用php脚本判断请求参数中是否带有“where”符号,如果有,则返回错误内容“请求参数不能带有where,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;53.使用php脚本判断请求参数中是否带有“leftjoin”符号,如果有,则返回错误内容“请求参数不能带有leftjoin,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;54.使用php脚本判断请求参数中是否带有“rightjoin”符号,如果有,则返回错误内容“请求参数不能带有rightjoin,禁止访问”,返回假,函数终止,如果没有,则跳转至下一步;55.使用php脚本判断请求参数中是否带有“innerjoin”符号,如果有,则返回错误内容“请求参数不能带有innerjoin,禁止访问”,返回假,函数终止,如果没有,则返回正常内容“请求参数内容正常,可以正常访问”,返回真。56.具体的,所述冻结sql注入的用户ip,包括以下的步骤:57.使用php脚本获取用户传入的请求参数,判断请求参数是否存在,如果不存在,打印日志“用户请求的参数不存在”,程序终止,如果存在,则跳转至下一步;58.使用php脚本获取用户的ip,判断该用户ip是否存在,如果不存在,则打印日志“用户的ip不存在,可能服务器出现故障”,程序终止,如果存在,则跳转至下一步;59.使用php脚本依次判断请求参数中是否带有“#”、“delete”、“update”、“select”、“alter”、“insert”、“drop”、“table”、“from”、“where”、“leftjoin”、“rightjoin”和“innerjoin”符号,如果没有,则说明不需要冻结用户ip,程序终止,如果有,则跳转至下一步;60.使用php脚本连接redis服务器,把用户的ip存入到redis列表中进行冻结,打印服务器日志“冻结成功”,程序终止,下次该用户访问时就会失败。61.s4、进入第二层防护,使用php脚本操作mysql数据库,把用户的参数传入到mysql数据库中的占位符中,如果返回假,则打印日志“存在sql注入,不允许访问数据库”,直接冻结该用户ip,程序终止,有效的防止了用户的sql注入;如果返回真,说明可以访问数据库,则跳转至步骤s5;62.s5、进入第三层防护,使用php脚本中的mysql_real_escape_string函数过滤用户参数的内容,把用户的参数传入到mysql_real_escape_string函数中,如果返回假,则直接冻结用户ip,再次有效的防止了用户的sql注入;如果返回真,则跳转至步骤s6;63.s6、进入第四层防护,使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口中,如果接口返回假,则直接冻结该用户ip,程序终止;如果接口返回真,则跳转至步骤s7;64.具体的,包括以下的步骤:65.使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口;66.使用springboot框架引入mybatis依赖,springboot是一种容器框架,mybatis是一种持久层框架;67.使用java接收传入参数,判断该传入参数是否存在,如果不存在,则报错,返回假,直接冻结该用户ip,程序终止,如果存在,则跳转至下一步骤;68.使用java连接mybatis,使用mybatis中的占位符技术判断所述传入参数是否存在sql注入,如果存在,则打印日志“存在sql注入,不允许操作数据库”,返回假,直接冻结该用户ip,接口终止,如果如果不存在,则返回真,操作成功。69.s7、获取数据库数据,操作完成,70.具体的,包括以下的步骤:71.使用php脚本操作用户传进来的参数,组装成高安全的sql语句,例如‘select*from`user`whereservicenum=’这种语句;72.使用php脚本连接mysql数据库,使用所述高安全的sql语句获取mysql数据库中的数据;73.使用php脚本将数据返回给用户,用户获取数据成功,实现了在用户获取数据库数据过程中防止sql注入的四层防护。74.本发明在用户获取移动转售系统数据库数据的过程中,对防止sql注入实行了四层防护,对恶意通过sql注入的用户ip,不允许访问,保证用户可正常访问移动转售系统。75.以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。当前第1页12当前第1页12
技术特征:
1.一种防止sql注入的方法,其特征在于:包括以下的步骤:s1、使用php脚本获取redis服务器中的所有ip,判断用户请求的ip是否存在于redis服务器中的ip中,若存在则报错,若不存在,则跳转至步骤s2;s2、使用php脚本获取用户登陆的帐号密码,判断用户的密码是否错误,若密码错误,则报错,若没有错误,则跳转至步骤s3;s3、使用php脚本调用函数preventingsqlinjectionattacks(),如果该函数返回假,则冻结sql注入的用户ip,程序终止;如果该函数返回真,则跳转至步骤s4;s4、使用php脚本操作mysql数据库,把用户的参数传入到mysql数据库中的占位符中,如果返回假,则直接冻结该用户ip,程序终止;如果返回真,则跳转至步骤s5;s5、使用php脚本中的mysql_real_escape_string函数过滤用户参数的内容,把用户的参数传入到mysql_real_escape_string函数中,如果返回假,则直接冻结用户ip;如果返回真,则跳转至步骤s6;s6、使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口中,如果接口返回假,则直接冻结该用户ip,程序终止;如果接口返回真,则跳转至步骤s7;s7、获取数据库数据,操作完成。2.如权利要求1所述的一种防止sql注入的方法,其特征在于:所述步骤s3中,使用php脚本调用函数preventingsqlinjectionattacks(),包括以下的步骤:使用php脚本获取用户传入的请求参数,调用函数preventingsqlinjectionattacks(),判断所述请求参数中是否带有“#”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“delete”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“update”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“select”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“alter”符号,如果有,则返回假,函数终止;如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“insert”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“drop”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“table”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“from”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“where”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“left join”符号,如果有,则返回假,函数终
止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“right join”符号,如果有,则返回假,函数终止,如果没有,则跳转至下一步;使用php脚本判断请求参数中是否带有“inner join”符号,如果有,则返回假,函数终止,如果没有,则返回真。3.如权利要求2所述的一种防止sql注入的方法,其特征在于:所述步骤s3中,冻结sql注入的用户ip,包括以下的步骤:使用php脚本获取用户传入的请求参数,判断请求参数是否存在,如果不存在,程序终止,如果存在,则跳转至下一步;使用php脚本获取用户的ip,判断该用户ip是否存在,如果不存在,则程序终止,如果存在,则跳转至下一步;使用php脚本依次判断请求参数中是否带有“#”、“delete”、“update”、“select”、“alter”、“insert”、“drop”、“table”、“from”、“where”、“left join”、“right join”和“inner join”符号,如果没有,程序终止,如果有,则跳转至下一步;使用php脚本连接redis服务器,把用户的ip存入到redis列表中进行冻结,程序终止。4.如权利要求1所述的一种防止sql注入的方法,其特征在于:所述步骤s6,包括以下的步骤:使用php脚本调用java防sql注入接口,把用户的传入参数传入到该接口;使用springboot框架引入mybatis依赖;使用java接收传入参数,判断该传入参数是否存在,如果不存在,则报错,返回假,直接冻结该用户ip,程序终止,如果存在,则跳转至下一步骤;使用java连接mybatis,使用mybati s中的占位符技术判断所述传入参数是否存在sql注入,如果存在,则返回假,直接冻结该用户ip,接口终止,如果如果不存在,则返回真,操作成功。5.如权利要求1所述的一种防止sql注入的方法,其特征在于:所述步骤s7,包括以下的步骤:使用php脚本操作用户传进来的参数,组装成高安全的sql语句;使用php脚本连接mysql数据库,使用所述高安全的sql语句获取mysql数据库中的数据;使用php脚本将数据返回给用户,用户获取数据成功。

技术总结
本发明提供了一种防止SQL注入的方法,涉及计算机技术领域,包括以下的步骤:S1、使用php脚本获取redis服务器中所有IP,判断用户请求的IP是否存在于redis服务器中的IP中,若存在则报错,若不存在,则跳转;S2、获取用户登陆的帐号密码,判断用户的密码是否错误;S3、调用函数PreventingSQLInjectionAttacks(),如果该函数返回假,则用户IP;如果返回真,则跳转;S4、把用户的参数传入到mySQL数据库中的占位符中,如果返回假,冻结该用户IP;如果返回真,则跳转;S5、过滤用户参数的内容,如果返回假,冻结用户IP;如果返回真,则跳转;S6、调用java防SQL注入接口,把用户的传入参数传入到该接口中,如果接口返回假,冻结该用户IP;如果返回真,则跳转;S7、获取数据库数据。获取数据库数据。获取数据库数据。


技术研发人员:张湘南
受保护的技术使用者:银盛通信有限公司
技术研发日:2021.11.05
技术公布日:2022/3/7

最新回复(0)