利用Page基类过滤URL注入代码-防SQL注入的方法

本文详细介绍了访问页面基类的设计与实现,通过优化Request.QueryString处理方式,防止注入攻击并提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <summary>
/// 访问页面的基类
/// by 贾世义 2011-8-28
/// </summary>
public class BaseWWW : Page
{
#region 变量和字段
/// <summary>
/// 替代Page.Request.QueryString
/// </summary>
protected NameValueCollection QueryString;

/// <summary>
/// 重载OnLoad排除注入代码和处理
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
QueryString = new NameValueCollection();
//排除注入代码
for (int i = 0; i < Page.Request.QueryString.Count; i++)
{
string key = Page.Request.QueryString.Keys[i];
QueryString.Add(key, Page.Request.QueryString[key].Replace(" ", "").Replace("(", "").Replace(")", "").Replace("'", "").Replace("&#39;", ""));
}
base.OnLoad(e);
}

}

using FLC.Api.Bus; using FLC.Api.Bus.Import.Model; using FLC.Api.Bus.MEF; using FLC.Api.Model.MEF; using FLC.Common.AppLogCom; using FLC.Common.DataAccess; using FLC.Tools; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.ComponentModel.Composition; using ywx.bip.bus.Common; using ywx.bip.bus.Model.BIP; using ywx.bip.bus.Model.BIPVO; using ywx.bip.bus.Model.MESVO; using System.Linq; using System.Collections.Generic; using System.Data; using FLC.Api.Bus.Import; namespace ywx.bip.bus { /// <summary> /// 同步BIP物料 /// </summary> [Export(typeof(IBusInterface))] public class GetMaterial : IBusInterface { public override FLC.Api.Model.MEF.BusData<JObject, JArray> Do(AppDatabaseTrans trans, FLC.Api.Model.MEF.BusData<JObject, JArray> data) { var interfaceUrl = "/nccloud/api/uapbd/material/material/queryMaterial"; var input = new InputObject(); input.company_no = "99"; var sql = "select tt_lasttime from flc_timingtask where tt_name='同步物料档案'"; var sTime = AppDatabase.QuerySingle<DateTime>(sql); var strartTime = "2010-01-01 00:00:00"; if(sTime!=null) { strartTime = sTime.ToString("yyyy-MM-dd HH:mm:ss"); } input.edit_time = $"{strartTime}~{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}"; var inputstr = JsonConvert.SerializeObject(input); AppLog.WriteLog($"同步物料接口收到参数inputstr:" + inputstr); var apicommon = ApiCommon.CreateInstance(); var client = apicommon.apiClient; client.Url = ywx.bip.bus.Common.Common.serverUrl + interfaceUrl; UFInterface uFInterface = new UFInterface(); uFInterface.ufinterface = new InputBase(); uFInterface.ufinterface.groupcode = "1"; uFInterface.ufinterface.pageInfo = new PageInfo(); uFInterface.ufinterface.pageInfo.pageIndex = "0"; uFInterface.ufinterface.pageInfo.pageSize = "10000"; uFInterface.ufinterface.data = new Data(); uFInterface.ufinterface.data.enablestate = "2"; if (!string.IsNullOrEmpty(input.data_no)) { string[] sname = new string[1]; sname[0] = input.data_no; uFInterface.ufinterface.data.code = sname; } else if (!string.IsNullOrEmpty(input.edit_time)) { //uFInterface.ufinterface.data.ts = inputobject.edit_time + "~" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); uFInterface.ufinterface.data.ts = input.edit_time; } string content = JsonConvert.SerializeObject(uFInterface); AppLog.WriteLog("GetMaterialData:query:" + content); client.Content = content; var result = client.AsyncRequest(); AppLog.WriteLog("GetMaterialData:result:" + result); ResultBIP<BIPMaterial> resultBIP = JsonConvert.DeserializeObject<ResultBIP<BIPMaterial>>(result); if (resultBIP.success || resultBIP.code == "1000000000") { if (resultBIP.data == null || resultBIP.data.Count == 0) throw new FLCException("没有满足条件的数据!"); } else if (!resultBIP.success && resultBIP.code == "1000000010" && resultBIP.message.Contains("失效") && resultBIP.message.Contains("token")) { ApiCommon.instance = null; Do(trans, data); } else throw new Exception(resultBIP.message); AppLog.WriteLog($"物料数量:{resultBIP.data.Count}"); // 2. 创建 ImportOtherModel 实例 var importOtherModel = new ImportOtherModel { Mapping = "ImportMaterial", Data = new List<DataSet>() }; var dataEntity = new List<DataEntry>(); foreach (var item in resultBIP.data) { var material = new Material { Name = item.name, Macode = item.code, Maccode = item.pk_marbasclass, FNumber = item.pk_material, Mastd = item.materialspec, GroupCode = item.pk_measdoc, IMassDate=item.qualitynum }; var de = new DataEntry(); de.Material = new List<Material>(); de.Material.Add(material); dataEntity.Add(de); } var root = new Root { Data = dataEntity,Mapping= "ImportMaterial" }; foreach (var entry in dataEntity) { DataSet dataSet = new DataSet(); // 动态生成 Productorder 的 DataTable DataTable productorderTable = ComFun.ConvertToDataTable(entry.Material); dataSet.Tables.Add(productorderTable); // 添加到 ImportOtherModel.Data 列表 importOtherModel.Data.Add(dataSet); } var importOtherBus = new ImportOtherBus(data.User, null); var importResult= importOtherBus.Save(importOtherModel); return data; } } }
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值