How to check string against the sql injection in c#

HTML markup:
  <table width="50%" align="center" border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td width="30%">
                    <asp:TextBox ID="txtName" runat="server" />
                </td>
                <td>
                    <asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" /><asp:Label
                        ID="lblMesg" runat="server" Text="Label"></asp:Label></td>
            </tr>
        </table>
Code behind Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class frmSQLinjection : System.Web.UI.Page
{
    public static SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=studentdetail;Integrated security=true");
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSave_Click(object sender, EventArgs e)
    {
        try
        {
            InsertRecord();
        }
        catch (Exception ex)
        { lblMesg.Text = ex.Message; }
    }
    private void InsertRecord()
        {
        using (SqlCommand cmd = new SqlCommand("insert into testSqlinjection(Name) values(@name) ", con))
        {
            cmd.CommandType = CommandType.Text;
            if (checkForSQLInjection(txtName.Text.Trim())) { lblMesg.Text = "Sql Injection Attack"; return; }
            checkForSQLInjection(txtName.Text.Trim());
            cmd.Parameters.AddWithValue("@name", txtName.Text.Trim());
            con.Close();
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
            lblMesg.Text = "Data Saved succsessfuly";
        }

    }
    public static Boolean checkForSQLInjection(string userInput)
    {
        bool isSQLInjection = false;
        string[] sqlCheckList = { "--",
                                       ";--",
                                       ";",
                                       "/*",
                                       "*/",
                                        "@@",
                                        "@",
                                        "char",
                                       "nchar",
                                       "varchar",
                                       "nvarchar",
                                       "alter",
                                       "begin",
                                       "cast",
                                       "create",
                                       "cursor",
                                       "declare",
                                       "delete",
                                       "drop",
                                       "end",
                                       "exec",
                                       "execute",
                                       "fetch",
                                            "insert",
                                          "kill",
                                             "select",
                                           "sys",
                                            "sysobjects",
                                            "syscolumns",
                                           "table",
                                           "update"
                                       };
        string CheckString = userInput.Replace("'", "''");
        for (int i = 0; i <= sqlCheckList.Length - 1; i++)
        {
            if ((CheckString.IndexOf(sqlCheckList[i],
StringComparison.OrdinalIgnoreCase) >= 0))
                        {    isSQLInjection = true;}}
                  return isSQLInjection;}}

Refrence Link:
http://www.dascode.net/post/2009/11/01/An-example-of-how-to-check-for-SQL-Injections.aspx
Author

Priti Kumari

I am technical blogger.I blogs at www.c-Sharpcorner.com and https://aspdotnetmyblog.blogspot.in/.

No comments:

Post a Comment