A. java怎样过滤危险字符
就WEB应用来说,所谓危险的字符一般就是两种
一个是SQL注入,一个是HTML语法注入
回SQL注入主流的框架答都可以搞定,JDBC永远都使用preparedstatement就可以防止所有的sql注入,关键是用户输入都要通过占位符往里放,就自动的替换掉了特殊字符了。hibernate等orm框架都会搞定这个问题
HTML语法注入是指用户输入的html代码回显出来,这样如果不转义就可以破坏页面的结构或者注入脚本。所以现在的网站都不允许用户直接输入html代码了,现在都是一些UBB标签来完成一些效果。HTML主要最好的解决办法是在回显的时候进行转义,所有的MVC框架或者展示层框架都有HTML转义的支持,包括struts,spring,volicty等,注意观察他们用于显示的标签
B. 防sql注入到底应过滤哪些字符
一般来说,这样处理即可:
所有参数都当作字符串处理,用单引号括起来。另外就是要把字符串中的单引号替换掉。
C. SQL字符串过滤 检测是否有危险字符
|SQL字符串过滤函数:
public static bool ProcessSqlStr(string Str)
{
bool ReturnValue = true;
try
{
if (Str.Trim() != "")
{
string SqlStr = "exec|+|select+|delete|update|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|create|*|iframe|script|";
SqlStr += "exec+|insert|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+table|creat+table";
string[] anySqlStr = SqlStr.Split('|');
foreach (string ss in anySqlStr)
{
if (Str.ToLower().IndexOf(ss) >= 0)
{
ReturnValue = false;
break;
}
}
}
}
catch
{
ReturnValue = false;
}
return ReturnValue;
}
以下是检测SQL语句中是否包含有非法危险的字符
/// <summary>
/// 检测是否有Sql危险字符
/// </summary>
/// <param name="str">要判断字符串</param>
/// <returns>判断结果</returns>
public static bool IsSafeSqlString(string str)
{
return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
}
/// <summary>
/// 改正sql语句中的转义字符
/// </summary>
public static string mashSQL(string str)
{
string str2;
if (str == null)
{
str2 = "";
}
else
{
str = str.Replace("\'", "'");
str2 = str;
}
return str2;
}
D. c#检测是否有危险字符的sql字符串过滤方法
如果你指的是网址上的参数,一般来说不做检测,而是将可能出现的危险内容直接替换为空值,比如空格、引号、分号、以及象update、select、delete或truncate这类sql关键字,全部用replace替换为空就行了。
E. sql 查询语句中如何过滤指定的字符
1、语句:SELECT * FROM dbo.Procts WHERE prod_name='king doll' AND prod_price>8。
--检索dbo.Procts表中所有列,过滤条件为由供应商king doll制造价格大于8的所有商品。
注意:--后面的字符是这条语句的注释,这条语句有两个条件,分别用AND关键字联接在一起,并且过滤结果必须满足这两个条件,如果只满足其中一个该数据不会被检索出来。
2、OR操作符(或)
语句:SELECT * FROM dbo.Procts WHERE prod_name='king doll' OR prod_price>8。
--检索dbo.Procts表中所有列,过滤条件为由供应商king doll制造价格大于8的所有商品值。
注意:--这里要说明的是OR操作符与AND操作符的不同之处是只要满足其中一个条件,数值就会被检索出来,例如:由供应商king doll制造价格小于8商品或者由供应商king add制造价格大于8的商品只要其中一个条件符合,数据就被检索出来。
3、IN操作符(指定条件范围)
语句:SELECT * FROM dbo.Procts WHERE prod_name IN ('king doll' ,'Queen dool')。
--检索dbo.Procts表中所有列,过滤条件为由供应商king doll和Queen dool制造的商品。
注意:它的功能其实和OR一样,但是它的执行速度会更快并且简洁,最大的优点是可以包含其他SELECT语句,能够更动态地建立WHERE字句。
F. java怎样过滤危险字符,该怎么解决
就WEB应用来说,所谓危险的字符一般就是两种
一个是SQL注入,一个是HTML语法注回入
SQL注入主流的框架都可答以搞定,JDBC永远都使用preparedstatement就可以防止所有的sql注入,关键是用户输入都要通过占位符往里放,就自动的替换掉了特殊字符了。hibernate等orm框架都会搞定这个问题
HTML语法注入是指用户输入的html代码回显出来,这样如果不转义就可以破坏页面的结构或者注入脚本。所以现在的网站都不允许用户直接输入html代码了,现在都是一些UBB标签来完成一些效果。HTML主要最好的解决办法是在回显的时候进行转义,所有的MVC框架或者展示层框架都有HTML转义的支持,包括struts,spring,volicty等,注意观察他们用于显示的标签
G. sql字符串过滤 检测是否有危险字符
如果你指的是网址上的参数,一般来说不做检测,而是将可能出现的危险内容直接替回换为空值,答比如空格、引号、分号、以及象update、select、delete或truncate这类sql关键字,全部用replace替换为空就行了。
H. 求过滤SQL非法字符的函数
Function CheckSql() '防止SQL注入
Dim sql_injdata
SQL_injdata = "'||exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)}</Script>"
Response.end
end if
next
Next
End If
If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language='javascript'>{alert('请不要在参数中包含非法字符!');history.back(-1)} </Script>"
Response.end
end if
next
next
end if
End Function
I. sql 查询语句中 如何过滤 指定的字符
sqlserver:
select REPLACE(字段名1,'湖南省','')
上面 湖南省为要替换的字符串,''为要替换的内容
J. 过滤某个字段的SQL语句
你好,希望我的回答对你有所帮助。
select 列名 from 表名 where ID not in (101010,101011,101012)
或者
select 列名 from 表名 where ID <> 101010 and ID <> 101011 and ID <> 101012