JAVA中防止SQL注入攻击类的源代码
防止SQL注入的Javascript代码::::
Java代码
1. 看到了一段防止SQL注入的JavaScript代码,但是似乎在后台解决的话会更好。
<SCRIPT language="JavaScript">
function Check(theform)
{
if (theform.UserName.value=="")
{
alert("请输入用户名!")
theform.UserName.focus();
return (false);
}
if (theform.Password.value == "")
{
alert("请输入密码!");
theform.Password.focus();
return (false);
}
}
function IsValid( oField )
{
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
$sMsg = "请您不要在参数中输入特殊字符和SQL关键字!"
if ( re.test(oField.value) )
{
alert( $sMsg );
oField.value = '';
oField.focus();
return false;
}
}
</SCRIPT>
看到了一段防止SQL注入的JavaScript代码,但是似乎在后台解决的话会更好。
<SCRIPT language="JavaScript">
function Check(theform)
{
if (theform.UserName.value=="")
{
alert("请输入用户名!")
theform.UserName.focus();
return (false);
}
if (theform.Password.value == "")
{
alert("请输入密码!");
theform.Password.focus();
return (false);
}
}
function IsValid( oField )
{
re= /select|update|delete|exec|count|'|"|=|;|>|<|%/i;
$sMsg = "请您不要在参数中输入特殊字符和SQL关键字!"
if ( re.test(oField.value) )
{
alert( $sMsg );
oField.value = '';
oField.focus();
return false;
}
}
</SCRIPT>
后台处理::::
Java代码
JAVA-字符串过滤类
package cn.com.hbivt.util;
/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class StringUtils {
//过滤通过页面表单提交的字符
private static String[][] FilterChars={{"<","<"},{">",">"},{" "," "},{"\"","""},{"&","&"},
{"/","/"},{"\\","\"},{"\n","<br>"}};
//过滤通过javascript脚本处理并提交的字符
private static String[][] FilterScriptChars={{"\n","\'+\'\\n\'+\'"},
{"\r"," "},{"\\","\'+\'\\\\\'+\'"},
{"\'","\'+\'\\\'\'+\'"}};
/**
* 用特殊的字符连接字符串
* @param strings 要连接的字符串数组
* @param spilit_sign 连接字符
* @return 连接字符串
*/
public static String stringConnect(String[] strings,String spilit_sign){
String str="";
for(int i=0;i<strings.length;i++){
str+=strings[i]+spilit_sign;
}
return str;
}
/**
* 过滤字符串里的的特殊字符
* @param str 要过滤的字符串
* @return 过滤后的字符串
*/
public static String stringFilter(String str){
String[] str_arr=stringSpilit(str,"");
for(int i=0;i<str_arr.length;i++){
for(int j=0;j<FilterChars.length;j++){
if(FilterChars[j][0].equals(str_arr[i]))
str_arr[i]=FilterChars[j][1];
}
}
return (stringConnect(str_arr,"")).trim();
}
/**
* 过滤脚本中的特殊字符(包括回车符(\n)和换行符(\r))
* @param str 要进行过滤的字符串
* @return 过滤后的字符串
* 2004-12-21 闫
*/
public static String stringFilterScriptChar(String str){
String[] str_arr=stringSpilit(str,"");
for(int i=0;i<str_arr.length;i++){
for (int j = 0; j < FilterScriptChars.length; j++) {
if (FilterScriptChars[j][0].equals(str_arr[i]))
str_arr[i] = FilterScriptChars[j][1];
}
}
return(stringConnect(str_arr,"")).trim();
}
/**
* 分割字符串
* @param str 要分割的字符串
* @param spilit_sign 字符串的分割标志
* @return 分割后得到的字符串数组
*/
public static String[] stringSpilit(String str,String spilit_sign){
String[] spilit_string=str.split(spilit_sign);
if(spilit_string[0].equals(""))
{
String[] new_string=new String[spilit_string.length-1];
for(int i=1;i<spilit_string.length;i++)
new_string[i-1]=spilit_string[i];
return new_string;
}
else
return spilit_string;
}
/**
* 字符串字符集转换
* @param str 要转换的字符串
* @return 转换过的字符串
*/
public static String stringTransCharset(String str){
String new_str=null;
try{
new_str=new String(str.getBytes("iso-8859-1"),"GBK");
}
catch(Exception e){
e.printStackTrace();
}
return new_str;
}
/**
* 测试字符串处理类
* @param args 控制台输入参数
*/
public static void main(String[] args){
//测试字符串过滤
String t_str1="<h1>StringDispose字符串 处理\n\r\'\"</h1>";
System.out.println("过滤前:"+t_str1);
System.out.println("过滤后:"+StringUtils.stringFilter(t_str1));
//测试合并字符串
String[] t_str_arr1={"PG_1","PG_2","PG_3"};
String t_str2=StringUtils.stringConnect(t_str_arr1,",");
System.out.println(t_str2);
//测试拆分字符串
String[] t_str_arr2=StringUtils.stringSpilit(t_str2,",");
for(int i=0;i<t_str_arr2.length;i++){
System.out.println(t_str_arr2[i]);
}
}
}
分享到:
相关推荐
### SQL防注入式攻击源代码知识点解析 #### 一、SQL注入概述 SQL注入是一种常见的安全漏洞,攻击者可以通过在应用程序的输入字段中插入恶意SQL语句来操纵数据库执行非授权操作。这种攻击可能导致敏感数据泄露、...
该算法通过一系列分析步骤构建了抽象语法树,并在此基础上定义了检测规则,进行遍历和跟踪,以检测Java源代码中可能的SQL注入路径。该方法适用于在Web应用程序部署前的安全性检查,对于保障Web应用安全、防止数据...
在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理以及如何预防它。SQL注入是一种利用不安全的Web应用程序来执行恶意SQL命令的攻击手段,攻击者可以通过在输入字段中插入SQL代码来操控后台...
HDSI(可能代表SQL注入 Hacker's Data Scan Instrument)是一款基于Pascal语言编写的SQL注入工具,它的源代码可以为开发者提供深入理解SQL注入攻击机制的机会,同时也能帮助安全研究人员学习如何检测和防止此类攻击...
本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。 什么是SQL注入?理解它是什么以及它的基本原理 查找、确认和自动发现SQL注入 查找代码...
本书包含所有与SQL注入攻击相关的、当前已知的信息,凝聚了由本书作者组成的、无私奉献的SQL注入专家团队的所有深刻见解。 什么是SQL注入?理解它是什么以及它的基本原理 查找、确认和自动发现SQL注入 查找代码...
在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过输入恶意的SQL语句来操纵或破坏数据库的一种手段。攻击者通常在Web表单中输入特殊字符或者构造特定的...
标题中的"SQL注入源码+SQL注入命令"提示我们将探讨实际的源代码片段和可能的注入命令。在Java应用中,通常使用JDBC(Java Database Connectivity)来与MySQL这样的数据库进行交互。当开发者没有对用户输入的数据进行...
其次,SQL漏洞静态代码检测工具则从源代码层面进行分析,对程序进行深度扫描,寻找可能导致SQL注入的编程错误。这种工具通常会检查SQL查询语句的构造方式,例如是否存在字符串拼接构建SQL语句的情况,或者是否使用了...
源代码中可能包含以下关键部分: 1. 数据库连接配置:这通常在配置文件中(如db.properties),包含数据库URL、用户名、密码等信息。 2. 数据库连接类:负责建立和管理数据库连接,如`DBConnection.java`,可能实现...
- **防止SQL注入**:使用预编译语句或ORM框架(如Hibernate)来避免恶意输入导致的数据安全问题。 - **性能优化**:通过缓存技术(如Redis)减少数据库访问,提高响应速度。 - **安全性**:HTTPS协议保证数据传输...
在实际开发中,我们需要编写SQL语句来创建表、插入数据、更新数据和查询数据,同时,还可以利用PreparedStatement和CallableStatement等接口提高效率,防止SQL注入攻击。 在用户界面方面,Java提供了Swing和JavaFX...
6. **安全性与性能**:Java的安全框架,如Spring Security,用于保护敏感信息,防止SQL注入攻击。而数据库优化,如索引设计、查询优化,能提升系统的响应速度。 7. **日志与监控**:系统会记录操作日志,便于故障...
7. **安全防护**:防止SQL注入攻击,通过预编译或转义特殊字符等方式确保SQL语句的安全性。 在Java中实现这样的SQL生成器,可能涉及到的技术有: - **JDBC(Java Database Connectivity)**:Java连接数据库的标准...
例如,使用PreparedStatement可以防止SQL注入攻击,提高代码的安全性。 此外,为了处理HTTP请求,可能还使用了Java Servlet技术。Servlet是Java平台上的一个标准,用于扩展服务器的功能。当客户端发送HTTP请求时,...
SQL注入攻击是网络安全中的一大威胁,它利用了Web应用程序对用户输入数据的处理不当,使得攻击者能够构造恶意的SQL代码,从而控制或篡改数据库中的数据。在本文中,我们将深入探讨一种新型的SQL注入攻击检测机制,该...
总的来说,Java SQL Inspector是开发过程中一个宝贵的辅助工具,能够帮助团队提高代码安全性,防止SQL注入攻击。结合良好的编程习惯和安全意识,开发者可以构建更健壮、更安全的应用程序,保障用户的数据安全。