ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی “ ورود به حساب” کلیک کنید.





اگر فرم ثبت نام برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمیشود، اینجا را کلیک کنید.





نمایش نتایج: از 1 به 8 از 8
  1. #1
    adminmsp
    مدیر کل و موسس سایت
    تاریخ عضویت
    1970 Jan
    محل سکونت
    M.S.P Soft
    نوشته ها
    1,590
    759
    465

    دفع حملات XSS در Asp.net

    برای دفع حملات Xss در Asp.net راه های خیلی زیادی وجود داره که بعضی از اونها خیلی پیچیده و بعضی دیگه خیلی آسونه . امروز یه روش خیلی ساده رو آموزش می دم و امیدوارم بدردتون بخوره البته این روش چندان پیشرفته و حرفه ای نیست ولی تا حدود زیادی می تونه به شما در دفع حملات Xss که با استفاده از تزریق کدهای Html انجام می شه رو بگیرید . ابتدا تابع زیر را تعریف کنید :

    Public Shared Function RemoveHTML(ByVal strText As String) As String

    Dim TAGLIST As String

    TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" &

    "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" &

    "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" &

    "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" &

    "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" &

    "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" &

    "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" &

    "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;"

    Const BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;"

    Dim nPos1 As Integer

    Dim nPos2 As Integer

    Dim nPos3 As Integer

    Dim strResult As String

    Dim strTagName As String

    Dim bRemove As Boolean

    Dim bSearchForBlock As Boolean

    nPos1 = InStr(strText, "<")

    Do While nPos1 > 0

    nPos2 = InStr(nPos1 + 1, strText, ">")

    If nPos2 > 0 Then

    strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)

    strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")

    nPos3 = InStr(strTagName, " ")

    If nPos3 > 0 Then

    strTagName = Left(strTagName, nPos3 - 1)

    End If

    If Left(strTagName, 1) = "/" Then

    strTagName = Mid(strTagName, 2)

    bSearchForBlock = False

    Else

    bSearchForBlock = True

    End If

    If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then

    bRemove = True

    If bSearchForBlock Then

    If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then

    nPos2 = Len(strText)

    nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)

    If nPos3 > 0 Then

    nPos3 = InStr(nPos3 + 1, strText, ">")

    End If

    If nPos3 > 0 Then

    nPos2 = nPos3

    End If

    End If

    End If

    Else

    bRemove = False

    End If

    If bRemove Then

    strResult = strResult & Left(strText, nPos1 - 1)

    strText = Mid(strText, nPos2 + 1)

    Else

    strResult = strResult & Left(strText, nPos1)

    strText = Mid(strText, nPos1 + 1)

    End If

    Else

    strResult = strResult & strText

    strText = ""

    End If

    nPos1 = InStr(strText, "<")

    Loop

    strResult = strResult & strText

    RemoveHTML = strResult

    End Function



    استفاده از این کلاس بسیار ساده می باشد. همان طور که در کد زیر می بینید ابتدا با استفاده از تابع HtmlEncode تمام کدهای html را فقط نمایش دادنی می کنیم (در صورت اجرا هیچ اثری روی صفحه نمی گذارند) و بعد کدهای html را توسط RemoveHTMLAllTage حذف می کنیم.

    Email =RemoveHTMLAllTage(Server.HtmlEncode(Emailtxt1.Text), False)



    شاید این سوال پیش بیاید که چرا باید از این تابع استفاده شود در صورتی که HtmlEncode قبلا کدها را بی اثر می کند ؟ که باید بگم این تابع صرفا برای حذف element های html در داده های رشته ای می باشد ولی در بعضی موارد می تواند کمک شایانی در دفع حملات کند.
    با M.S.P Soft به دنياي برنامه نويسي وارد شويد[برای نمایش لینک باید عضو شوید. ]
  2. 1
  3. #2
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    اگر امکان دارد کد c# بگذارید
  4. #3
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    اگر امکان دارد یک سمپل بگذارید
  5. #4
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    چگونه می توان کد پست 1 در یک پروژه پیاده سازی کرد
  6. #5
    mohammad973
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    4
    0
    2
    نقل قول نوشته اصلی توسط spr23 [برای نمایش لینک باید عضو شوید. ]
    اگر امکان دارد کد c# بگذارید
    سلام دوست عزیز ؛
    بفرما ::

    public static string RemoveHTML(string strText)
    {

    string TAGLIST = null;

    TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" + "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" + "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" + "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" + "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" + "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" + "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" + "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;";

    const string BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;";

    int nPos1 = 0;

    int nPos2 = 0;

    int nPos3 = 0;

    string strResult = null;

    string strTagName = null;

    bool bRemove = false;

    bool bSearchForBlock = false;

    nPos1 = (strText.IndexOf("<", 0) + 1);

    while (nPos1 > 0)
    {

    nPos2 = (strText.IndexOf(">", nPos1) + 1);

    if (nPos2 > 0)
    {

    strTagName = strText.Substring(nPos1, nPos2 - nPos1 - 1);

    strTagName = strTagName.Replace("\r", " ").Replace("\n", " ");

    nPos3 = (strTagName.IndexOf(" ", 0) + 1);

    if (nPos3 > 0)
    {

    strTagName = strTagName.Substring(0, nPos3 - 1);

    }

    if (strTagName.Substring(0, 1) == "/")
    {

    strTagName = strTagName.Substring(1);

    bSearchForBlock = false;

    }
    else
    {

    bSearchForBlock = true;

    }

    if ((TAGLIST.ToUpper().IndexOf((";" + strTagName + ";").ToUpper(), 0) + 1) > 0)
    {

    bRemove = true;

    if (bSearchForBlock)
    {

    if ((BLOCKTAGLIST.ToUpper().IndexOf((";" + strTagName + ";").ToUpper(), 0) + 1) > 0)
    {

    nPos2 = strText.Length;

    nPos3 = (strText.ToUpper().IndexOf(("</" + strTagName).ToUpper(), nPos1) + 1);

    if (nPos3 > 0)
    {

    nPos3 = (strText.IndexOf(">", nPos3) + 1);

    }

    if (nPos3 > 0)
    {

    nPos2 = nPos3;

    }

    }

    }

    }
    else
    {

    bRemove = false;

    }

    if (bRemove)
    {

    strResult = strResult + strText.Substring(0, nPos1 - 1);

    strText = strText.Substring(nPos2);

    }
    else
    {

    strResult = strResult + strText.Substring(0, nPos1);

    strText = strText.Substring(nPos1);

    }

    }
    else
    {

    strResult = strResult + strText;

    strText = "";

    }

    nPos1 = (strText.IndexOf("<", 0) + 1);

    }

    strResult = strResult + strText;

    return strResult;

    }
  7. 2
  8. #6
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    نقل قول نوشته اصلی توسط mohammad973 [برای نمایش لینک باید عضو شوید. ]
    سلام دوست عزیز ؛
    بفرما ::

    public static string RemoveHTML(string strText)
    {

    string TAGLIST = null;

    TAGLIST = ";!--;!DOCTYPE;A;ACRONYM;ADDRESS;APPLET;AREA;B;BASE;BASEFONT;" + "BGSOUND;BIG;BLOCKQUOTE;BODY;BR;BUTTON;CAPTION;CENTER;CITE;CODE;" + "COL;COLGROUP;COMMENT;DD;DEL;DFN;DIR;DIV;DL;DT;EM;EMBED;FIELDSET;" + "FONT;FORM;FRAME;FRAMESET;HEAD;H1;H2;H3;H4;H5;H6;HR;HTML;I;IFRAME;IMG;" + "INPUT;INS;ISINDEX;KBD;LABEL;LAYER;LAGEND;LI;LINK;LISTING;MAP;MARQUEE;" + "MENU;META;NOBR;NOFRAMES;NOSCRIPT;OBJECT;OL;OPTION;P;PARAM;PLAINTEXT;" + "PRE;Q;S;SAMP;SCRIPT;SELECT;SMALL;SPAN;STRIKE;STRONG;STYLE;SUB;SUP;" + "TABLE;TBODY;TD;TEXTAREA;TFOOT;TH;THEAD;TITLE;TR;TT;U;UL;VAR;WBR;XMP;";

    const string BLOCKTAGLIST = ";APPLET;EMBED;FRAMESET;HEAD;NOFRAMES;NOSCRIPT;OBJECT;SCRIPT;STYLE;";

    int nPos1 = 0;

    int nPos2 = 0;

    int nPos3 = 0;

    string strResult = null;

    string strTagName = null;

    bool bRemove = false;

    bool bSearchForBlock = false;

    nPos1 = (strText.IndexOf("<", 0) + 1);

    while (nPos1 > 0)
    {

    nPos2 = (strText.IndexOf(">", nPos1) + 1);

    if (nPos2 > 0)
    {

    strTagName = strText.Substring(nPos1, nPos2 - nPos1 - 1);

    strTagName = strTagName.Replace("\r", " ").Replace("\n", " ");

    nPos3 = (strTagName.IndexOf(" ", 0) + 1);

    if (nPos3 > 0)
    {

    strTagName = strTagName.Substring(0, nPos3 - 1);

    }

    if (strTagName.Substring(0, 1) == "/")
    {

    strTagName = strTagName.Substring(1);

    bSearchForBlock = false;

    }
    else
    {

    bSearchForBlock = true;

    }

    if ((TAGLIST.ToUpper().IndexOf((";" + strTagName + ";").ToUpper(), 0) + 1) > 0)
    {

    bRemove = true;

    if (bSearchForBlock)
    {

    if ((BLOCKTAGLIST.ToUpper().IndexOf((";" + strTagName + ";").ToUpper(), 0) + 1) > 0)
    {

    nPos2 = strText.Length;

    nPos3 = (strText.ToUpper().IndexOf(("</" + strTagName).ToUpper(), nPos1) + 1);

    if (nPos3 > 0)
    {

    nPos3 = (strText.IndexOf(">", nPos3) + 1);

    }

    if (nPos3 > 0)
    {

    nPos2 = nPos3;

    }

    }

    }

    }
    else
    {

    bRemove = false;

    }

    if (bRemove)
    {

    strResult = strResult + strText.Substring(0, nPos1 - 1);

    strText = strText.Substring(nPos2);

    }
    else
    {

    strResult = strResult + strText.Substring(0, nPos1);

    strText = strText.Substring(nPos1);

    }

    }
    else
    {

    strResult = strResult + strText;

    strText = "";

    }

    nPos1 = (strText.IndexOf("<", 0) + 1);

    }

    strResult = strResult + strText;

    return strResult;

    }

    کدی که در پست قبل با c# گذاشته شد با استفاده از یک دکمه و تکس باکس مورد استفاده قرار گرفت اما یک کد جاوا اسکریپت در تک باکس نوشته شد اما کد قادر به حذف تگ <script> نشد و خطا می دهد کد به صورت زیر مورد استفاده قرار گرفت
    کد:
     protected void Button2_Click(object sender, EventArgs e)
        {
       Literal1.Text=  RemoveHTML(TextBox2.Text);
        }
    ویرایش توسط spr23 : 2013-10-22 در ساعت 11:18 PM
  9. 1
  10. #7
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    آیا کدی که در پست 5 است این امکان دارد که در یک پروژه پیاده سازی شود اگر قابل پیاده سازی است یک سمپل بگذارید
  11. #8
    spr23
    كاربر عادي
    تاریخ عضویت
    2013 Oct
    نوشته ها
    6
    2
    1
    آیا کد گذاشته شده قابل استفاده نیست
    ویرایش توسط spr23 : 2013-10-28 در ساعت 07:56 PM
نمایش نتایج: از 1 به 8 از 8

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

Content Relevant URLs by vBSEO 3.6.0 RC 2