具有ASP成员资格的Sql Server中的安全性和SQL注入

时间:2014-10-18 01:09:37

标签: asp.net security sql-injection

我正在使用会员资格实现ASP MVC。该站点托管在Azure云中。

预防

的防御措施有哪些?
  1. Sql Injection暴力攻击
  2. 如何根据尝试预防/锁定用户的IP

1 个答案:

答案 0 :(得分:0)

我有第一个问题的答案。 您必须在“Session [data]”中存储一些有用的数据,而不是从客户端发送它。

    public ActionResult Index()
    {
        try
        {
            if (WebSecurity.IsAuthenticated)
            {
                String ContractID_string = Session["ContractID"].ToString();
                if(ContractID_string!="0") 

也不要在没有检查的情况下在linq或sqlQuery中使用客户端的某些字符串输入值。

使用

的最佳方式

在控制中

 [HttpPost]
    [ValidateAntiForgeryToken]
public ActionResult _SaveMail(Email_Options Mail)

在视图中

     @using (Ajax.BeginForm("_SaveMail", "Contract", Model,
        new AjaxOptions
        {
            UpdateTargetId = "Email_Options",
            OnFailure = "alert('errr')",
            OnSuccess = "DeleteErrorMessage('#Form_"+ViewBag.Contract_part+"')"
        }, htmlAttributes: new { id = "Form_"+ViewBag.Contract_part}))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary()
        <table id="Email_Options">
            <tbody>
                <tr>
                    <th>@Html.LabelFor(m => Model.Email, new { style = "font-size:1.05em;" })</th>
                    <th> 
                        @Html.HiddenFor(m => Model.ContractID)
                        @Html.EditorFor(m => Model.Email)
                        @Html.ValidationMessageFor(m => Model.Email)
                        <button style="font-size:1em; margin:0px; padding:0;" type="submit">Сохранить</button>
                    </th>
                </tr>
                <tr>
                    <th>@Html.LabelFor(m => Model.SendToEmail, new { @class = "checkbox" })</th>
                    <th>@Html.CheckBoxFor(m => Model.SendToEmail)</th>
                </tr>
                <tr>
                    <th>@Html.LabelFor(m => Model.SentToHome, new { @class = "checkbox" })</th>
                    <th>@Html.CheckBoxFor(m => Model.SentToHome)</th>
                </tr>
                <tr>
                    <th>@Html.LabelFor(m => Model.Print, new { @class = "checkbox" })</th>
                    <th>@Html.CheckBoxFor(m => Model.Print)</th>
                </tr>
            </tbody>
        </table>
    }