我想确保我的代码符合标准和安全性

时间:2017-03-23 06:42:26

标签: mysql asp.net security

是ASP.NET的新手,我刚刚开发了一个简单的在线考试门户供学习。 我使用ADO.NET,MySql并在VS 2010中开发。

我有一个登录页面,用户可以登录并注册新用户的页面。成功登录后,用户被重定向到问题页面,我从数据库中获取第一个问题。 我在单选按钮列表中的标签和选项中填充了问题。用户可以选择一个选项并单击下一步按钮。 在下一个按钮的点击事件中,我计算标记。 我只在会话中存储所有值。当用户点击最后一个问题的下一个时,用户被重定向到结果页面并打印标记。

这是我的代码

public partial class Questions : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(-1));
        Response.Cache.SetNoStore();
        if (!IsPostBack)
        {
            renderQuestions(1);
            Session["buttonIndex"] = 1;
            Session["Marks"] = 0;
        }

    }
    public void renderQuestions(int index)
    {

        MySqlConnection con = null;
        string conString = ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
        string qry = "SELECT * FROM QUESTIONS WHERE QUESTION_ID="+index+"";
        try
        {
            using (con = new MySqlConnection(conString))
            {
                con.Open();
                using (MySqlCommand cmd = new MySqlCommand(qry, con))
                {
                    using (MySqlDataAdapter ada = new MySqlDataAdapter(cmd))
                    {
                        DataTable dt = new DataTable();
                        ada.Fill(dt);
                        if (dt.Rows.Count > 0)
                        {
                                clsQuestion ques = new clsQuestion();
                                ques.QuestionId = Convert.ToInt32(dt.Rows[0][0]);
                                ques.Question = Convert.ToString(dt.Rows[0][1]);
                                ques.Option1 = Convert.ToString(dt.Rows[0][2]);
                                ques.Option2 = Convert.ToString(dt.Rows[0][3]);
                                ques.Option3 = Convert.ToString(dt.Rows[0][4]);
                                ques.Option4 = Convert.ToString(dt.Rows[0][5]);
                                ques.Answer = Convert.ToInt32(dt.Rows[0][6]);
                                renderQuesAndAnswers(ques);
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            con.Close();
        }
    }
    public void renderQuesAndAnswers(clsQuestion quest)
    {


            lblQuestion.Text = quest.Question;
            RadioButtonList1.Items.Clear();
            RadioButtonList1.Items.Add(quest.Option1);
            RadioButtonList1.Items.Add(quest.Option2);
            RadioButtonList1.Items.Add(quest.Option3);
            RadioButtonList1.Items.Add(quest.Option4);               
            Session["QuestionNumber"] = quest.QuestionId ;
            Session["Answer"] = quest.Answer;
    }
    public   class clsQuestion
    {
        private int questionId;
        private string question;
        private string  option1;
        private string  option2;
        private string  option3;
        private string  option4;
        private int answer;
        public int QuestionId
        {
            get { return questionId; }
            set { questionId = value; }
        }
        public string Question
        {
            get { return question; }
            set { question = value; }
        }
        public string  Option1
        {
            get { return option1; }
            set { option1 = value; }
        }
        public string  Option2
        {
            get { return option2; }
            set { option2 = value; }
        }
        public string  Option3
        {
            get { return option3; }
            set { option3 = value; }
        }
        public string  Option4
        {
            get { return option4; }
            set { option4 = value; }
        }
        public int Answer
        {
            get { return answer; }
            set { answer = value; }
        }


    }

    protected void option1_CheckedChanged(object sender, EventArgs e)
    {
        if (Convert.ToInt32 (Session["Answer"]) == 1)
        {
           int marks=Convert.ToInt32 (Session["Marks"]);
           marks++;
           Session["Marks"] = marks;
        }

    }

    protected void option2_CheckedChanged(object sender, EventArgs e)
    {
        if (Convert.ToInt32(Session["Answer"]) == 2)
        {

            int marks = Convert.ToInt32(Session["Marks"]);
            marks++;
            Session["Marks"] = marks;
        }
    }

    protected void option3_CheckedChanged(object sender, EventArgs e)
    {
        if (Convert.ToInt32(Session["Answer"]) == 3)
        {
            int marks = Convert.ToInt32(Session["Marks"]);
            marks++;
            Session["Marks"] = marks;
        }
    }

    protected void option4_CheckedChanged(object sender, EventArgs e)
    {
        if (Convert.ToInt32(Session["Answer"]) == 4)
        {

        }
    }

    protected void btnNext_Click(object sender, EventArgs e)
    {



    }

    protected void btnNext_Click1(object sender, EventArgs e)
    {
        int buton = Convert.ToInt32(Session["buttonIndex"]);
        if (buton < 5)
        {
            if (RadioButtonList1.SelectedIndex + 1 == Convert.ToInt32(Session["Answer"]))
            {
                int marks = Convert.ToInt32(Session["Marks"]);
                marks++;
                Session["Marks"] = marks;
            }

            Session["buttonIndex"] = Convert.ToInt32(Session["buttonIndex"]) + 1;
            renderQuestions(Convert.ToInt32(Session["buttonIndex"]));
            if (buton == 4)
            {
                Server.Transfer("Results.aspx");
                Session.RemoveAll();
            }
        }

    }

}

这是我的HTML

<form id="form1" runat="server">
<div>
<h3>Please choose the right answer</h3>
</div>

<table class="style1">
    <tr>
        <td class="style3">
            <asp:Panel ID="Panel1" runat="server">
                <asp:Label ID="lblQuestion" runat="server" Text=""></asp:Label>
            </asp:Panel>
            &nbsp;</td>
        <td class="style4">
            </td>
    </tr>
    <tr>
        <td class="style2">
            Answers:</td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td class="style2">
            <asp:Panel ID="Panel2" runat="server">
                <asp:RadioButtonList ID="RadioButtonList1" runat="server">
                </asp:RadioButtonList>
                <asp:RadioButton ID="option1" runat="server" Checked="false" AutoPostBack="True" 
                    GroupName="Option" oncheckedchanged="option1_CheckedChanged" />
                <asp:RadioButton ID="option2" runat="server" Checked="false" AutoPostBack="True" 
                    GroupName="Option" oncheckedchanged="option2_CheckedChanged" />
                <asp:RadioButton ID="option3" runat="server" Checked="false" AutoPostBack="True" 
                    GroupName="Option" oncheckedchanged="option3_CheckedChanged" />
                <asp:RadioButton ID="option4" runat="server" Checked="false" AutoPostBack="True" 
                    GroupName="Option" oncheckedchanged="option4_CheckedChanged" />
            </asp:Panel>
        </td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td class="style2">
            &nbsp;</td>
        <td>
            &nbsp;</td>
    </tr>
    <tr>
        <td class="style2">
            <asp:Button ID="btnNext" runat="server" onclick="btnNext_Click1" Text="Next" />
        </td>
        <td>
            &nbsp;</td>
    </tr>
</table>

</form>

我得到的结果很完美,没有任何问题。但我想确保我做的最好的方式,我的代码符合标准,是否有任何安全问题。 如果可以的话,请有人指导我。谢谢。

0 个答案:

没有答案