Menonaktifkan Fungsi Cross-Site Scripting dan SQLInjection Dalam Login di ASP.NET

Yang di maksud dengan Menonaktifkan Fungsi Cross-Site Scripting dan SQLInjection Dalam Login di ASP.NET adalah meloloskan masuk kedalam query untuk di proses tanpa ada validasi

untuk langkah awal kita bisa membuat Table nya seperti gambar di bawah:

Saya disini membuat table login dengan nama “ADM_MST_USER”

Setelah itu bisa dibuat fungsi didalam kelas di asp.net
misal web.config nya seperti di bawah :

<connectionStrings>
  <clear />
  <add name="conn" connectionString="Provider=MSDAORA.1;Password=xyz;User ID=xyz;Data Source=orcl;Persist Security Info=True" />
 </connectionStrings>


dan fungsi kelas nya di buat seperti ini :

  Public Shared Function GetKoneksi() As String

            Return System.Configuration.ConfigurationManager.ConnectionStrings("conn").ConnectionString

        End Function

Disini saya memakai database oracle dengan memakai OleDb

di dalam form nya bisa dibuat seperti gambar di bawah :

di atas form nya di tambah ValidateRequest=”false” :

<%@ Page Language="VB" AutoEventWireup="false" ValidateRequest="false" CodeFile="Default.aspx.vb" Inherits="Default" %>

Setelah membuat Form seperti di gambar atas mari kita membuat Fungsi untuk Menonaktifkan Fungsi Cross-Site Scripting dan SQLInjection Dalam Login di ASP.NET. Coba Copas code di bawah :

Imports Microsoft.VisualBasic
Imports System.Data.OleDb
Imports System.Data

Namespace ConnClasses
    Public Class Rzl_tool
        Inherits conn
        ''' <summary>
        ''' Cari Login
        ''' </summary>
        ''' <param name="IDUSER">isi text ID user yang dicari</param>
        ''' <param name="PASSUSER">isi text Sandi user yang dicari</param>
        ''' <param name="warning">Label untuk Data tidak ketemu atau Eror</param>
        ''' <remarks></remarks>
        Public Shared Sub CariLogin(ByVal IDUSER As String, ByVal PASSUSER As String, ByVal warning As Label)
            warning.Text = ""
            Dim StrDbCon As String = GetKoneksi() ''''untuk connect database
            cn = New OleDbConnection(StrDbCon) ''''untuk connect database
            Dim SQLQuery As String = "Select * from ADM_MST_USER where USER_ID = ? and USER_PASSWORD = ?"
            Dim selectCMD As OleDbCommand = New OleDbCommand
            Dim dr As OleDbDataReader = Nothing
            Dim tipe As String = ""

            cn.Open()
            selectCMD.Connection = cn
            selectCMD.CommandType = CommandType.Text
            selectCMD.CommandText = SQLQuery.ToString()
            selectCMD.Parameters.AddWithValue("USER_ID", System.Web.HttpUtility.HtmlDecode(IDUSER))
            selectCMD.Parameters.AddWithValue("USER_PASSWORD", System.Web.HttpUtility.HtmlDecode(PASSUSER))
            Try
                dr = selectCMD.ExecuteReader()
                Try
                    If dr.HasRows = True Then
                        While dr.Read
                            HttpContext.Current.Session("LID_USER") = dr("ID_USER").ToString
                            HttpContext.Current.Session("LUSERNAME") = dr("USERNAME").ToString
                            HttpContext.Current.Session("LUSER_PASSWORD") = dr("USER_PASSWORD").ToString
                            Exit While
                        End While

                    Else
                        warning.Text = "* Pengguna atau Password Salah"
                    End If
                Catch ex As Exception
                    warning.Text = "* Pengguna atau Password Salah"
                Finally
                    dr.Close()
                End Try

            Catch ex As Exception
                warning.Text = "* Pengguna atau Password Salah"
            Finally
                cn.Close()
                cn.Dispose()
                GC.Collect()
            End Try

                HttpContext.Current.Response.Redirect("iBeranda/Default.aspx")
        End Sub
    End Class
End Namespace

Lihat lah code di atas , untuk query nya “Select * from ADM_MST_USER where USER_ID = ? and USER_PASSWORD = ?
memakai tanda “?”(tanya). kenapa ?
Karena kita membuat nya dengan Parameter. dan nama parameternya adalah 1.USER_ID 2.USER_PASSWORD

untuk behind code nya bisa dilihat code di bawah ini :

Imports ConnClasses
Partial Class Default2
    Inherits System.Web.UI.Page

    Protected Sub btnlogin_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnlogin.Click
        LblWarning.Text = ""
        Rzl_tool.CariLogin(System.Web.HttpUtility.HtmlEncode(txusername.Text.ToString), System.Web.HttpUtility.HtmlEncode(txpassword.Text.ToString), LblWarning)
    End Sub
End Class

Sebelum di parameter CariLogin di taruh untuk id user dan password user kita Encode terlebih dahulu dengan memakai “System.Web.HttpUtility.HtmlEncode” dan didalam fungsi CariLogin sebelum di taruh ke parameter kita Decode terlebih dahulu dengan memakai “System.Web.HttpUtility.HtmlDecode” semua ini untuk Menonaktifkan Fungsi Cross-Site Scripting dan SQLInjection untuk Encode dan Decode pengertian lebih lanjutnya bisa cari di google 😀

Yang jadi pertanyaan adalah :
Bagaimana kalau untuk Insert, Delete atau Update ? Parameter ini bisa di pakai juga untuk Insert, Delete atau Update tapi dengan logika yang berbeda, selamat mengembangkannya 😀

Semoga coding ini bisa Menonaktifkan Fungsi Cross-Site Scripting dan SQLInjection :D,…
kalau ada Celah harap maklum karena saya masih cupu kk 😀 dan diharapkan comments di halaman ini

Wassalam ,… ğŸ˜Ž

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s