Очистка ввода с помощью javascript / mootools? - PullRequest
0 голосов
/ 22 августа 2011

Я недавно унаследовал большой сайт. Я проверял его на наличие недостатков безопасности.

У меня есть следующий код, который вызывается, когда пользователь отправляет обновление своих данных пользователя:

// Ajax request
new Request.JSON({ method: 'get', url: 'ajax.ashx', autoCancel: true, urlEncoded: false, secure: false,
    headers: { "Content-type": "application/json" },
    onSuccess: function (_json) {
        if (!_json.error) {
            $('inp_firstname').value = _json.fn;
            $('inp_surname').value = _json.sn;
            $('usr_Country').value = $(ddlCountry0).getSelected()[0].get('text');
            $('inp_companyname').value = _json.cn;
            $('inp_website').value = _json.ws;
            $('inp_facebook').value = _json.fb;
            $('inp_twitter').value = _json.tw;
            $('bus_Activity').value = $(ddlActivity0).getSelected()[0].get('text');
            $('private_contacts').value = $(chkPrivateContacts).checked;

            hidePopup('editDetailsPopup');
        }
    }
}).get({ 'm': 'editDetailsPro',
    'fn': removeTags($('firstname').value),
    'sn': removeTags($('surname').value),
    'pwd': removeTags($('password').value),
    'country': $(ddlCountry0).getSelected()[0].get('value'),
    'cn': removeTags($('companyname').value),
    'ws': removeTags($('website').value),
    'ac': $(ddlActivity0).getSelected()[0].get('value'),
    'pc': $(chkPrivateContacts).checked == 1,
    'fb': removeTags($('facebooklink').value),
    'tw': removeTags($('twitterlink').value) });

Оказывается, функция removeTags(); ничего не делает. Также нет серверной проверки ввода, так что это большая дыра в безопасности.

Что мне нужно проверить на стороне клиента, чтобы убедиться, что законные пользователи могут вводить свои данные, и есть ли функции библиотеки, которые будут выполнять все эти проверки для меня (я не смог их найти)? Когда он доберется до сервера, могу ли я вернуть его в исходную форму или вставить в базу данных как есть?

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

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

2 голосов
/ 22 августа 2011

MooTools имеет метод stripTags, я думаю, это то, что вы хотите: http://mootools.net/docs/more/Types/String.Extras#String:stripTags

Могу добавить, что вы должны никогда выполнять очистку JavaScript в одиночку ?Всегда выполняйте проверку на стороне сервера и дезинфекцию входящего пользовательского ввода.Поскольку вы используете ASP.NET, проверьте эту ссылку:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...