PDA

View Full Version : آموزش: جلوگیری از ورود متن غیر مجاز به TextBox ها



fakhravari
چهارشنبه 27 مهر 1390, 03:25 صبح
با سلام
مراحل را به ترتیب اجرا کنید
ابتدا یک کلاس در پوشه App_Code ایجاد کرده به اسم

SampleSqlInjectionScreeningModule.cs
و متن زیر را کپی کنید درون کلاس

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace Sample
{
public class SampleSqlInjectionScreeningModuleCS : IHttpModule
{
public static string[] blackList = {"--",";--",";","/*","*/","@@","@",
"char","nchar","varchar","nvarchar",
"alter","begin","cast","create","cursor","declare","delete","drop","end","exec","execute",
"fetch","insert","kill","open",
"select", "sys","sysobjects","syscolumns",
"table","update"};

public void Dispose()
{

}


public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(app_BeginRequest);
}

void app_BeginRequest(object sender, EventArgs e)
{
HttpRequest Request = (sender as HttpApplication).Context.Request;

foreach (string key in Request.QueryString)
CheckInput(Request.QueryString[key]);
foreach (string key in Request.Form)
CheckInput(Request.Form[key]);
foreach (string key in Request.Cookies)
CheckInput(Request.Cookies[key].Value);
}

private void CheckInput(string parameter)
{
for (int i = 0; i < blackList.Length; i++)
{
if ((parameter.IndexOf(blackList[i], StringComparison.OrdinalIgnoreCase) >= 0))
{
HttpContext.Current.Response.Redirect("Error_Char.htm");
}
}
}

}
}


بعد برید فایل وب کنفیک این کد اضافه کنید
<system.webServer>
<modules>
<add name="SampleSqlInjectionScreeningModuleCS" type="Sample.SampleSqlInjectionScreeningModuleCS" preCondition="managedHandler"/>
</modules>
</system.webServer>
__________________________________________________ ___________
در قسمت می توانید Global.asax
<%@ Import namespace="System.Globalization" %>


<script runat="server">
public static string[] blackList = {"--",";--",";","/*","*/","@@","@",
"char","nchar","varchar","nvarchar",
"alter","begin","cast","create","cursor","declare","delete","drop","end","exec","execute",
"fetch","insert","kill","open",
"select", "sys","sysobjects","syscolumns",
"table","update"};
private void CheckInput(string parameter)
{
CompareInfo comparer = CultureInfo.InvariantCulture.CompareInfo;

for (int i = 0; i < blackList.Length; i++)
{
if (comparer.IndexOf(parameter, blackList[i], CompareOptions.IgnoreCase) >= 0)
{
Response.Redirect("Error_Char.htm");
}
}
}

void Application_BeginRequest(object sender, EventArgs e)
{
foreach (string key in Request.QueryString)
CheckInput(Request.QueryString[key]);
foreach (string key in Request.Form)
CheckInput(Request.Form[key]);
foreach (string key in Request.Cookies)
CheckInput(Request.Cookies[key].Value);
}
</script>

خوب تمام شد حالا درون هر ورودی که مقدار های بالا باشند error.htm ظاهر میشه.
منبع
http://forums.asp.net/t/1254125.aspx
__________________________________________________ ___________________
دوستان اگه کد بهتری دارن بزار :قلب:

mehran_sh_t
چهارشنبه 27 مهر 1390, 11:11 صبح
سلام
چرا blacklist دو جا تکرار شده؟ وظیفه دومی چیه؟
این کدی که در پاییم گذاشتید رو کجا باید بذاریم؟

fakhravari
چهارشنبه 27 مهر 1390, 12:36 عصر
از کلاس استفاده کنید .
از کد های درون
Global.asax
استفاده کنید
کپی پیست
فقط به کلمات دقت کنید

mehran_sh_t
چهارشنبه 27 مهر 1390, 16:41 عصر
از کلاس استفاده کنید .
از کد های درون
Global.asax
استفاده کنید
کپی پیست
فقط به کلمات دقت کنید

الان اینا جواب سوالای من بود؟!!

fakhravari
چهارشنبه 27 مهر 1390, 19:03 عصر
خب مشکل شما چی؟
فایل گلوبال دیگه . چیز خاصی نیست که.:متفکر:
به 2 طریق قابل اجراست.
منظورتون نمیفهمم ادرس http://forums.asp.net/t/1254125.aspx چک کنید منبع از اون سایت .
برای اجراع که تشحیص بدین
یه تکسباکس بزارین یکی از حروف توش بنوسید بعد یه باتن بزارید روش کلیک کنید.

mehran_sh_t
چهارشنبه 27 مهر 1390, 19:22 عصر
بهتره وقتی دارید کپی پیست می کنید، ابتدا یه نگاهی به پست بندازید، ببینید اصلا چی هست!

این چیزی که شما گفتید، در منبع، دو روش مختلف هستش، که اینجا شما به عنوان یک روش پیست کردید.

تلفظ صحیح "config" هم کانفیگ هستش :)

موفق باشید

fakhravari
چهارشنبه 27 مهر 1390, 19:34 عصر
باشه شما سرورید

aminireza65
شنبه 06 اردیبهشت 1393, 17:23 عصر
دوستان حالا ورودی رو چه طوری باید به این کلاس بدیم؟؟؟؟

Ahsani
یک شنبه 07 اردیبهشت 1393, 00:07 صبح
با اجازه همه من کاملش کنم:

و در نهایت این کد رو در فایل Global.asax مابین تگ های <script> قرا بدید. این تابعی ایست که به ASP.Net میگه که عمل کنترل رشته رو در طول BeginRequest Event ادامه بده.
چنانچه در فایل Global.asax شما اعلانی به نام Application_BeginRequest وجود داره، شما بایستی کد زیر رو داخل تابع Application_BeginRequest موجود قرار بدید:

void Application_BeginRequest(object sender, EventArgs e)
{
foreach (string key in Request.QueryString)
CheckInput(Request.QueryString[key]);
foreach (string key in Request.Form)
CheckInput(Request.Form[key]);
foreach (string key in Request.Cookies)
CheckInput(Request.Cookies[key].Value);
}

aminireza65
یک شنبه 07 اردیبهشت 1393, 10:57 صبح
آرایه blacklist به نظر شما کامله و چیزی دیگه ای از قلم نیافتاده؟
در ضمن من فکر کنم که کاراکتر @ باید از لیست حذف بشه چون در این صورت ایمیل وارد شده توسط کاربر غیر مجاز محسوب میشه.

safa.net
سه شنبه 09 اردیبهشت 1393, 19:09 عصر
با سلام
کاربرد مطلب فوق بیشتر در کجاست ؟