SQL注入防御的方法有:1、PreparedStatement;2、使用正则表达式过滤传入的参数;3、字符串过滤。其中,采用预编译语句集是简单又有效的方法,因为它内置了处理SQL注入的能力。
SQL注入防御的方法
下面针对JSP,说一下应对方法:
(推荐学习:mysql教程)
1、(简单又有效的方法)PreparedStatement
采用预编译语句集,它内置了处理SQL注入的能力,只要使用它的setXXX方法传值即可。
使用好处:
(1)代码的可读性和可维护性;
(2)PreparedStatement尽最大可能提高性能;
(3)最重要的一点是极大地提高了安全性。
原理:
sql注入只对sql语句的准备(编译)过程有破坏作用,而PreparedStatement已经准备好了,执行阶段只是把输入串作为数据处理,而不再对sql语句进行解析、准备,因此也就避免了sql注入问题。
2、使用正则表达式过滤传入的参数
要引入的包:
import java.util.regex.*;
正则表达式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;
判断是否匹配:
Pattern.matches(CHECKSQL,targerStr);
下面是具体的正则表达式:
检测SQL meta-characters的正则表达式 :
/(\%27)|(\’)|(\-\-)|(\%23)|(#)/ix
修正检测SQL meta-characters的正则表达式 :
/((\%3D)|(=))[^\n]*((\%27)|(\’)|(\-\-)|(\%3B)|(:))/i
典型的SQL 注入攻击的正则表达式 :
/\w*((\%27)|(\’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
检测SQL注入,UNION查询关键字的正则表达式 :
/((\%27)|(\’))union/ix(\%27)|(\’)
检测MS SQL Server SQL注入攻击的正则表达式:
/exec(\s|\+)+(s|x)p\w+/ix
等等…..
3、字符串过滤
比较通用的一个方法:(||之间的参数可以根据自己程序的需要添加)
public static boolean sql_inj(String str){ String inj_str = "'|and|exec|insert|select|delete|update| count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,"; String inj_stra[] = split(inj_str,"|"); for (int i=0 ; i < inj_stra.length ; i++ ){ if (str.indexOf(inj_stra[i])>=0){ return true; } } return false; }
凡涉及到执行的SQL中有变量时,用JDBC(或者其他数据持久层)提供的如:PreparedStatement就可以 ,切记不要用拼接字符串的方法就可以了。
The above is the detailed content of What are the methods of SQL injection defense?. For more information, please follow other related articles on the PHP Chinese website!

0x01前言概述小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。mysql>selectexp(709);+-----------------------+|exp(709)|+-----------------------+|8.218407461554972

Nginx是一个快速、高性能、可扩展的Web服务器,它的安全性是Web应用程序开发中不可忽略的问题。尤其是SQL注入攻击,它可以对Web应用程序造成巨大的破坏。在本篇文章中,我们将讨论如何使用Nginx来防范SQL注入攻击,以保护Web应用程序的安全。什么是SQL注入攻击?SQL注入攻击是一种利用Web应用程序漏洞的攻击方式。攻击者会在Web应用程序中注入恶

PHP编程技巧:如何防止SQL注入攻击在进行数据库操作时,安全是至关重要的。SQL注入攻击是一种常见的网络攻击,它利用了应用程序对用户输入的不正确处理,从而导致恶意的SQL代码被插入并执行。为了保护应用程序免受SQL注入攻击的影响,我们需要采取一些防范措施。使用参数化查询参数化查询是最基本也是最有效的防范SQL注入攻击的方法。它通过将用户输入的值与SQL查询

PHPSQL注入漏洞的检测和修复概述:SQL注入是指攻击者利用Web应用程序对输入进行恶意注入SQL代码的一种攻击方式。PHP作为一种广泛应用于Web开发的脚本语言,被广泛用于开发动态网站和应用程序。然而,由于PHP的灵活性和易用性,开发者常常忽略了安全性,导致了SQL注入漏洞的存在。本文将介绍如何检测和修复PHP中的SQL注入漏洞,并提供相关代码示例。检

Laravel开发注意事项:防止SQL注入的方法与技巧随着互联网的发展和计算机技术的不断进步,Web应用程序的开发也变得越来越普遍。在开发过程中,安全性一直是开发者不可忽视的重要问题。其中,防止SQL注入攻击是开发过程中需要特别关注的安全问题之一。本文将介绍几种Laravel开发中常用的方法和技巧,帮助开发者有效地防止SQL注入。使用参数绑定参数绑定是Lar

在网络安全领域里,SQL注入攻击是一种常见的攻击方式。它利用恶意用户提交的恶意代码来改变应用程序的行为以执行不安全的操作。常见的SQL注入攻击包括查询操作、插入操作和删除操作。其中,查询操作是最常被攻击的一种,而防止SQL注入攻击的一个常用的方法是使用PHP。PHP是一种常用的服务器端脚本语言,它在web应用程序中的使用非常广泛。PHP可以与MySQL等关系

PHP表单过滤:SQL注入防范与过滤引言:随着互联网的快速发展,Web应用程序的开发变得越来越普遍。在Web开发中,表单是最常见的用户交互方式之一。然而,表单提交数据的处理过程中存在着安全风险。其中,最常见的风险之一就是SQL注入攻击。SQL注入攻击是一种利用Web应用程序对用户输入数据进行处理不当而导致攻击者能够执行非授权数据库查询的攻击方式。攻击者通过在

SQL注入是一种常见的网络攻击方式,它利用应用程序对输入数据的不完善处理,成功将恶意的SQL语句注入到数据库中。这种攻击方式特别常见于使用PHP语言开发的应用程序中,因为PHP对用户输入的处理通常相对较弱。本文将介绍一些应对SQL注入漏洞的策略,并提供PHP代码示例。使用预处理语句预处理语句是一种建议的防御SQL注入的方法。它使用绑定参数的方式,将输入数据与


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SublimeText3 Linux new version
SublimeText3 Linux latest version

SublimeText3 English version
Recommended: Win version, supports code prompts!
