㈠ c#检测是否有危险字符的sql字符串过滤方法
如果你指的是网址上的参数,一般来说不做检测,而是将可能出现的危险内容直接替换为空值,比如空格、引号、分号、以及象update、select、delete或truncate这类sql关键字,全部用replace替换为空就行了。
㈡ 几种过滤URL和FORM中非法字符的方法
ASP过滤URL和FORM中非法字符第一种:<%'检查URL输入限制非法字符url=LCase(request.querystring())ip=request.ServerVariables(
REMOTE_ADDR)pos1=instr(url,%)pos2=instr(url,')pos3=instr(url,;)pos4=instr(url,where)pos5=instr(url,select)pos6=instr(url,chr)pos7=instr(url,/)pos8=Instr(url,and)ifpos1<0orpos2<0orpos3<0orpos4<0orpos5<0orpos6<0orpos7<0orpos8<0thenresponse.Write
你尝试使用危险字符,系统已经对此做了记录如下您的IP:&ip&操作时间:&date()&
response.End()endif'检查表单输入,限制非法字符'使用request.QueryString来索引request的所有资料,作为SQL检查之用'如出现非法字符则自动停止输出fori_request=1torequest.form.Countifinstr(request.form(i_request),')<0orinstr(request.form(i_request),;)<0thenResponse.Write
<scriptlanguage='javascript'history.back();alert('你尝试使用危险字符,系统已经对此做了记录如下您的IP:&ip&操作时间:&date()&
');</script
response.End()endifnext%第二种:<%OnErrorResumeNextdimsql_injdata,sql_inj,sql_get,sql_data
SQL_injdata='|oxSQL_inj=split(SQL_Injdata,|)'定义过滤字符,可以自己添加,以|分隔''|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare'对post方式过滤IfRequest.Form<ThenForEachSql_PostInRequest.FormForSQL_Data=0ToUbound(SQL_inj)ifinstr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))0ThenResponse.redirectss'出错时转向页面
Response.endendifnextnextendif'对GET方式过滤IfRequest.QueryString<ThenForEachSQL_GetInRequest.QueryStringForSQL_Data=0ToUbound(SQL_inj)ifinstr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))0ThenResponse.redirectss'出错时转向页面
Response.endendifnextNextEndIf%第三种:functioncheckstr(str)'过滤非法字符函数dimtempstrifstr=thenexitfunctiontempstr=replace(str,
chr(34),)'tempstr=replace(tempstr,
chr(39),)''tempstr=replace(tempstr,
chr(60),)'<tempstr=replace(tempstr,
chr(62),)'tempstr=replace(tempstr,
chr(37),)'%tempstr=replace(tempstr,
chr(38),)'&tempstr=replace(tempstr,
chr(40),)'(tempstr=replace(tempstr,
chr(41),)')tempstr=replace(tempstr,
chr(59),)';tempstr=replace(tempstr,
chr(43),)'+tempstr=replace(tempstr,
chr(45),)'-tempstr=replace(tempstr,
chr(91),)'[tempstr=replace(tempstr,
chr(93),)']tempstr=replace(tempstr,
chr(123),)'{tempstr=replace(tempstr,
chr(125),)'}checkstr=tempstrendfunction第四种:'================================================'函数名:IsValidStr'作用:判断字符串中是否含有非法字符'参数:str----原字符串'返回值:False‚True-----布尔值'================================================PublicFunctionIsValidStr(ByValstr)IsValidStr=(str)ThenExitFunctionIfTrim(str)=‚iForbidStr=
and|chr|:|=|%|&|$|#|@|+|-|*|/|/|<||;|‚|^|&Chr(32)&|&Chr(34)&|&Chr(39)&|&Chr(9)ForbidStr=Split(ForbidStr‚|)Fori=0ToUBound(ForbidStr)IfInStr(1‚str‚ForbidStr(i)‚1)0ThenIsValidStr==TrueEndFunctionASP.(Stringpara)//过滤非法字符{intflag=0;flag+=para.indexOf(')+1;flag+=para.indexOf(;)+1;flag+=para.indexOf(1=1)+1;flag+=para.indexOf(|)+1;flag+=para.indexOf(<)+1;flag+=para.indexOf()+1;if(flag!=0){System.
out
提交了非法字符!!!);returnfalse;}returntrue;}
㈢ SQL字符串过滤 检测是否有危险字符
|SQL字符串过滤函数:
public static bool ProcessSqlStr(string Str)
{
bool ReturnValue = true;
try
{
if (Str.Trim() != "")
{
string SqlStr = "exec|insert+|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;
}
㈣ java怎么过滤“<”“>”“script”“iframe”等危险标签
你是想防止脚本注入吗?
比较好的方法是把<和>替换成转义字符.
这样好处(1)用户体验好,善意的用户看来,输入的是什么显示的还是什么(2)可以防止多数脚本注入(3)工作量小,只用控制住<和>就可以了(4)可以解决一些纯过滤解决不了的问题,比如<sscriptcript>这种恶意脚本,去除了script之后反而成全了攻击者.而[转义<]sscriptcript[转义>]是没有问题的
㈤ java怎样过滤危险字符
就WEB应用来说,所谓危险的字符一般就是两种
一个是SQL注入,一个是HTML语法注入
回SQL注入主流的框架答都可以搞定,JDBC永远都使用preparedstatement就可以防止所有的sql注入,关键是用户输入都要通过占位符往里放,就自动的替换掉了特殊字符了。hibernate等orm框架都会搞定这个问题
HTML语法注入是指用户输入的html代码回显出来,这样如果不转义就可以破坏页面的结构或者注入脚本。所以现在的网站都不允许用户直接输入html代码了,现在都是一些UBB标签来完成一些效果。HTML主要最好的解决办法是在回显的时候进行转义,所有的MVC框架或者展示层框架都有HTML转义的支持,包括struts,spring,volicty等,注意观察他们用于显示的标签
㈥ 在asp中怎么过滤用户输入的非法字符
<%
dim texts
texts=request("表单明")
dim kill '要过滤的字符
kill="墙,垃,围殴" '比喻
dim rsss
rsss=split(kill,",")
dim i,xxxx,yyyy
for i=0 to ubound(rsss)
xxxx=len(rsss(i))
dim j
for j=1 to xxxx
yyyy=yyyy&"*"
next
dim zzzz '过滤后的字符串
if i=0 then zzzz=texts
'如果你想把过滤字版符换成*
zzzz=replace(zzzz,rsss(i),yyyy)
'如果你想把过滤字符直接去掉
zzzz=replace(zzzz,rsss(i),"")
next
'zzzz就是过权滤后的字符了
%>
㈦ asp.net+sqlserver 我已经过滤危险字符了,但数据库还是被挂码了,不知道怎么解决
查看cookie是否有注入点
http://hi..com/pain_you/blog/item/c2816ea9999565b6ca130c51.html
你看看 这篇介绍
㈧ asp登陆过滤输入字符串中的危险符号问题
inString 是需要过滤的字符窜
Replace(expression, find, replacewith[, compare[, count[, start]]])
expression 必选项。 字符串表达式 包含要替代的子字符串。
find 必选项。被搜索的子字符串。
replacewith 必选项。用于替换的子字符串。
start 可选项。expression 中开始搜索子字符串的位置。如果省略,默认值为 1。在和count 关联时必须用
count 可选项。执行子字符串替换的数目。如果省略,默认值为 -1,表示进行所有可能的替换。在和 start 关联时必须用。
compare 可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,缺省值为 0 ,这意味着必须进行二进制比较。
replace(NewStr,"a","b") 用“B”替换NewStr里面的“A”
Chr()返回与指定的 ANSI 字符代码相对应的字符。
Chr(60)是"<"的ANSI字符代码。
㈨ 几种过滤URL和FORM中非法字符的方法
ASP过滤URL和FORM中非法字符第一种:<%'检查URL输入限制非法字符url=LCase(request.querystring())ip=request.ServerVariables( REMOTE_ADDR)pos1=instr(url,%)pos2=instr(url,')pos3=instr(url,;)pos4=instr(url,where)pos5=instr(url,select)pos6=instr(url,chr)pos7=instr(url,/)pos8=Instr(url,and)ifpos1<0orpos2<0orpos3<0orpos4<0orpos5<0orpos6<0orpos7<0orpos8<0thenresponse.Write 你尝试使用危险字符,系统已经对此做了记录如下您的IP:&ip&操作时间:&date()& response.End()endif'检查表单输入,限制非法字符'使用request.QueryString来索引request的所有资料,作为SQL检查之用'如出现非法字符则自动停止输出fori_request=1torequest.form.Countifinstr(request.form(i_request),')<0orinstr(request.form(i_request),;)<0thenResponse.Write <scriptlanguage='javascript'history.back();alert('你尝试使用危险字符,系统已经对此做了记录如下您的IP:&ip&操作时间:&date()& ');</script response.End()endifnext%第二种:<%OnErrorResumeNextdimsql_injdata,sql_inj,sql_get,sql_data SQL_injdata='|oxSQL_inj=split(SQL_Injdata,|)'定义过滤字符,可以自己添加,以|分隔''|;|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare'对post方式过滤IfRequest.Form<ThenForEachSql_PostInRequest.FormForSQL_Data=0ToUbound(SQL_inj)ifinstr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))0ThenResponse.redirectss'出错时转向页面 Response.endendifnextnextendif'对GET方式过滤IfRequest.QueryString<ThenForEachSQL_GetInRequest.QueryStringForSQL_Data=0ToUbound(SQL_inj)ifinstr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))0ThenResponse.redirectss'出错时转向页面 Response.endendifnextNextEndIf%第三种:functioncheckstr(str)'过滤非法字符函数dimtempstrifstr=thenexitfunctiontempstr=replace(str, chr(34),)'tempstr=replace(tempstr, chr(39),)''tempstr=replace(tempstr, chr(60),)'<tempstr=replace(tempstr, chr(62),)'tempstr=replace(tempstr, chr(37),)'%tempstr=replace(tempstr, chr(38),)'&tempstr=replace(tempstr, chr(40),)'(tempstr=replace(tempstr, chr(41),)')tempstr=replace(tempstr, chr(59),)';tempstr=replace(tempstr, chr(43),)'+tempstr=replace(tempstr, chr(45),)'-tempstr=replace(tempstr, chr(91),)'[tempstr=replace(tempstr, chr(93),)']tempstr=replace(tempstr, chr(123),)'{tempstr=replace(tempstr, chr(125),)'}checkstr=tempstrendfunction第四种:'================================================'函数名:IsValidStr'作用:判断字符串中是否含有非法字符'参数:str----原字符串'返回值:False‚True-----布尔值'================================================PublicFunctionIsValidStr(ByValstr)IsValidStr=(str)ThenExitFunctionIfTrim(str)=‚iForbidStr= and|chr|:|=|%|&|$|#|@|+|-|*|/|/|<||;|‚|^|&Chr(32)&|&Chr(34)&|&Chr(39)&|&Chr(9)ForbidStr=Split(ForbidStr‚|)Fori=0ToUBound(ForbidStr)IfInStr(1‚str‚ForbidStr(i)‚1)0ThenIsValidStr==TrueEndFunctionASP.(Stringpara)//过滤非法字符{intflag=0;flag+=para.indexOf(')+1;flag+=para.indexOf(;)+1;flag+=para.indexOf(1=1)+1;flag+=para.indexOf(|)+1;flag+=para.indexOf(<)+1;flag+=para.indexOf()+1;if(flag!=0){System. out 提交了非法字符!!!);returnfalse;}returntrue;}
㈩ 求php防止被sql 注入攻击的过滤用户输入内容的函数
functionclean($v){
//判断magic_quotes_gpc是否为打开
if(!get_magic_quotes_gpc()){
//进行magic_quotes_gpc没有打开的情况对提交数据的过滤
$v=addslashes($v);
}
//把'_'过滤掉回
$v=str_replace("_","\_",$v);
//把'%'过滤掉
$v=str_replace("%","\%",$v);
//把'*'过滤掉
$v=str_replace("*","*",$v);
//回车转换答
$v=nl2br($v);
//html标记转换
$v=htmlspecialchars($v);
return$v;
}
如果需要,还可以屏蔽一下危险字符,例如insert, update, delete等
//将update去掉
$v=str_replace("update","",$v);
最后,在拼装sql语句时,用户输入的东西,全括在单引号内