当前位置:编程学习 > C#/ASP.NET >>

网址传参给搜索页面,如何防注入

网址传参给搜索页面,如何防注入 --------------------编程问答-------------------- 过滤一些危险的字符,查询时使用存储过程 --------------------编程问答-------------------- 给个联系方式,把《在ASP.NET中防止注入攻击》发给你~ --------------------编程问答-------------------- 我上传到我的资源里面了,要是有时间可以看看~ --------------------编程问答-------------------- 直接编码好了
使用UrlEncode 方法对不安全的URL地址进行编码

如果你需要获取有用户输入部分的URL参数,这可能带来一定的安全风险,使用HttpUtility.UrlEncode方法对这个地址字符串编码.

HttpUtility.UrlEncode(urlString);

到获取时再解码。 --------------------编程问答--------------------
引用 4 楼 only_endure 的回复:
直接编码好了 
使用UrlEncode 方法对不安全的URL地址进行编码 

如果你需要获取有用户输入部分的URL参数,这可能带来一定的安全风险,使用HttpUtility.UrlEncode方法对这个地址字符串编码. 

HttpUtility.UrlEncode(urlString); 

到获取时再解码。



那跟没编码有什么区别吗??

别人真想注入不是也可以对自己的添加的字段编码后,再执行吗? --------------------编程问答--------------------
引用 3 楼 hxq987 的回复:
我上传到我的资源里面了,要是有时间可以看看~

我去看看 --------------------编程问答-------------------- 我是自己写的


AntiInject AtiInject = new AntiInject();
        if (AtiInject.hasInjectdata(sUserName))
            return;
        if (AtiInject.hasInjectdata(sPassword))
            return;
--------------------编程问答-------------------- 这个防注入,最主要的是在数据库那里配好,

比如考虑只给public的权限,


然后在代码里再处理一下  --------------------编程问答-------------------- string connectionString = DataClass.f_databaseConfigReadToString();
            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                OracleParameter[] paramss = new OracleParameter[3];
                paramss[0] = new OracleParameter();
                paramss[0].OracleType = OracleType.NVarChar;
                paramss[0].Size = 2000;
                paramss[0].ParameterName = "P_LOGLEVEL";
                paramss[0].Value = TextBox1.Text;
                paramss[0].Direction = ParameterDirection.Input;
                paramss[0].DbType = DbType.String;

                paramss[1] = new OracleParameter();
                paramss[1].OracleType = OracleType.NVarChar;
                paramss[1].Size = 1000;
                paramss[1].ParameterName = "P_ERRORMSG";
                paramss[1].Direction = ParameterDirection.InputOutput;
                paramss[1].DbType = DbType.String;
                paramss[1].Value = "";

                paramss[2] = new OracleParameter();
                paramss[2].OracleType = OracleType.NVarChar;
                paramss[2].Size = 10;
                paramss[2].ParameterName = "P_TESTMSG";
                paramss[2].Value = "";
                paramss[2].DbType = DbType.String;
                paramss[2].Direction = ParameterDirection.Output;

                connection.Open();
                OracleTransaction ot = connection.BeginTransaction();
                //ot.IsolationLevel = IsolationLevel.Serializable;
                try
                {
                    OracleHelper.ExecuteNonQuery(ot, CommandType.StoredProcedure,"P_SEC_LOG", paramss);
                    DataSet set1 = OracleHelper.ExecuteDataset(ot, CommandType.Text,"select * from N_SEC_LOG_TAB");
                    this.GridView1.DataSource = set1.Tables[0];
                    this.GridView1.DataBind();
                    ot.Commit();
                }
                catch (System.Exception ee)
                {
                    ot.Rollback();
                }
                
            }

传参的方式
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,