Как я могу защитить свою страницу обработчика asp.net - PullRequest
1 голос
/ 31 марта 2011

Я использую эту практику для добавления комментариев с помощью AJAX, отправляя данные в обработчик ASP.NET, который собирает информацию, а затем вставляет комментарий, но я боюсь, что любой может его использовать, я ошибаюсь!?

    //AddComment.ashx
    public void ProcessRequest (HttpContext context) {
    CommentsDB db = new CommentsDB();
    db.InsertComment(new Comment(context.Request["name"].ToString(), context.Request["comment"].ToString(), "no", int.Parse(context.Request["id"].ToString())));

    context.Response.ContentType = "text/plain";
    context.Response.Write("succeed");
}

        //Comments.js
        function AddComment()
    {
        n = document.getElementById('txtName').value;
        c = document.getElementById('txtComment').value;
        i = document.getElementById('ctl00_ContentPlaceHolder1_thread').value;
        m = document.getElementById('ctl00_ContentPlaceHolder1_Label1');
        if(n == "" || c == "" || n.length > 100 || c.length > 400)
        {
            m.innerHTML = "<center><font color=black size=3><b><font color=red>*</font> An error has occurred</b></font></center><br>";
            return;
        }
        m.innerHTML = "";
        document.getElementById('btn').disabled = true;
        $.post("./Handlers/AddComment.ashx", {'name':n, 'comment':c, 'id':i}, function(Response){
            m.innerHTML  = "<center><font color=black size=3><b>accepted</b> <img src=./Images/success-icon.png></font></center><br>";
        });         
    }

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Ваше предположение верно, что ваши пользователи могут потенциально делать свои собственные HTTP-запросы к вашему обработчику и предоставлять поддельные данные. Они также могут манипулировать разметкой вашей страницы в своих браузерах (с помощью любой панели инструментов разработчика) и делать то же самое.

Итак, вы захотите провести некоторую проверку на стороне сервера, если вас это беспокоит. Если ваше приложение требует аутентификации, просто посмотрите имя текущего пользователя в методе обработчика ProcessRequest, а не публикуйте его.

Я думаю вот к чему ваш вопрос. Кроме того, очистите вашу разметку, теги center и font устарели.

0 голосов
/ 31 марта 2011

Если вам требуется, чтобы комментаторы были зарегистрированы, чем проверить фактического пользователя (хранящегося на веб-сервере - например, в сеансе).

Или, если вы разрешаете комментарии без аутентификации, рассмотрите возможность использования некоторыхкапча для защиты от автоматических запросов.

...