zoukankan
html css js c++ java
.net 通用防注入代码
using
System;
namespace
web.comm
{
/**/
///
<summary>
///
ProcessRequest 的摘要说明。
///
</summary>
public
class
ProcessRequest
{
public
ProcessRequest()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
SQL注入式攻击代码分析
#region
SQL注入式攻击代码分析
/**/
///
<summary>
///
处理用户提交的请求
///
</summary>
public
static
void
StartProcessRequest()
{
//
System.Web.HttpContext.Current.Response.Write("<script>alert('dddd');</script>");
try
{
string
getkeys
=
""
;
//
string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["CustomErrorPage"].ToString();
if
(System.Web.HttpContext.Current.Request.QueryString
!=
null
)
{
for
(
int
i
=
0
;i
<
System.Web.HttpContext.Current.Request.QueryString.Count;i
++
)
{
getkeys
=
System.Web.HttpContext.Current.Request.QueryString.Keys[i];
if
(
!
ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys],
0
))
{
//
System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");
System.Web.HttpContext.Current.Response.Write(
"
<script>alert('请勿非法提交!');history.back();</script>
"
);
System.Web.HttpContext.Current.Response.End();
}
}
}
if
(System.Web.HttpContext.Current.Request.Form
!=
null
)
{
for
(
int
i
=
0
;i
<
System.Web.HttpContext.Current.Request.Form.Count;i
++
)
{
getkeys
=
System.Web.HttpContext.Current.Request.Form.Keys[i];
if
(
!
ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys],
1
))
{
//
System.Web.HttpContext.Current.Response.Redirect (sqlErrorPage+"?errmsg=sqlserver&sqlprocess=true");
System.Web.HttpContext.Current.Response.Write(
"
<script>alert('请勿非法提交!');history.back();</script>
"
);
System.Web.HttpContext.Current.Response.End();
}
}
}
}
catch
{
//
错误处理: 处理用户提交信息!
}
}
/**/
///
<summary>
///
分析用户请求是否正常
///
</summary>
///
<param name="Str">
传入用户提交数据
</param>
///
<returns>
返回是否含有SQL注入式攻击代码
</returns>
private
static
bool
ProcessSqlStr(
string
Str,
int
type)
{
string
SqlStr;
if
(type
==
1
)
SqlStr
=
"
exec |insert |select |delete |update |count |chr |mid |master |truncate |char |declare
"
;
else
SqlStr
=
"
'|and|exec|insert|select|delete|update|count|*|chr|mid|master|truncate|char|declare
"
;
bool
ReturnValue
=
true
;
try
{
if
(Str
!=
""
)
{
string
[] anySqlStr
=
SqlStr.Split(
'
|
'
);
foreach
(
string
ss
in
anySqlStr)
{
if
(Str.IndexOf(ss)
>=
0
)
{
ReturnValue
=
false
;
}
}
}
}
catch
{
ReturnValue
=
false
;
}
return
ReturnValue;
}
#endregion
}
}
查看全文
相关阅读:
基于Yarp的http内网穿透库HttpMouse
Redis+Lua解决高并发场景抢购秒杀问题
SQL慢查询排查思路
webrtc之TURE、STUN、摄像头打开实战
WebService就该这么学
超详细 Java 15 新功能介绍
Java 14 新功能介绍
Java 17 将要发布,补一下 Java 13 中的新功能
Java 8 Function 函数接口
PO/DO/VO/DTO/BO/POJO概念与区别
原文地址:https://www.cnblogs.com/Spring/p/1209077.html
最新文章
从java注解漫谈到typescript装饰器——注解与装饰器
三维旋转笔记:欧拉角/四元数/旋转矩阵/轴角-记忆点整理
单向数据流-从共享状态管理:flux/redux/vuex漫谈异步数据处理
OGC标准WMTS服务概念与地图商的瓦片编号流派-web地图切片加载
web自动化测试(3):web功能自动化测试selenium基础课
web自动化测试(2):选择selenium优势?与PhantomJS/QTP/Monkey对比
web自动化测试(1):再谈UI发展史与UI、功能自动化测试
html5鼠标拖动排序及resize实现方案分析及实践
GIS坐标系测绘原理:大地水准面/基准面/参考椭球体/EPSG/SRI/WKT
再谈BOM和DOM(7):HTML DOM Event 对象属性及DOM事件详细列表
热门文章
再谈BOM和DOM(6):dom对象及event对象位值计算—如offsetX/Top,clentX
再谈BOM和DOM(5):各个大流浪器DOM和BOM里面的那些坑—兼容性
再谈BOM和DOM(4):DOM0/DOM2事件处理分析
再谈BOM和DOM(3):DOM节点操作-元素样式修改及DOM内容增删改查
再谈BOM和DOM(2):DOM节点层次/属性/选择器/节点关系/操作详解
再谈BOM和DOM(1):BOM与DOM概述
Netty 框架学习 —— UDP 广播
庆FastGithub加入.NET Core Community
程序员们,还在挣扎着上不了github吗
基于YARP实现的FastGithub
Copyright © 2011-2022 走看看