使用javascript/mootools清理输入

Input sanitization with javascript/mootools?

本文关键字:输入 mootools javascript 使用      更新时间:2023-09-26

我最近继承了一个很大的网站。我一直在检查它的安全漏洞。

我有以下代码,当用户提交更新到他们的用户详细信息时调用:

// 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();不做任何事情。也没有服务器端验证输入,所以这是一个很大的安全漏洞。

我需要为客户端检查什么以确保合法用户可以输入他们的数据,是否有库函数将为我做所有这些检查(我找不到任何)?当它到达服务器时,我是将其还原为原始形式,还是按原样将其插入数据库中?

MooTools有stripTags方法,我想这就是你想要的:http://mootools.net/docs/more/Types/String.Extras#String:stripTags

我可以补充一下,你应该永远不要单独处理吗?始终对传入的用户输入进行服务器端验证和清理。鉴于您使用ASP。. NET,查看此链接:

  • http://msdn.microsoft.com/en-us/library/ff647397.aspx

您不应该依赖于客户端验证。这样做很好,这样您就可以在将不正确的数据发送到服务器之前提醒用户,但是您还需要服务器端验证。Javascript可能会被禁用,或者恶意用户可能会向您的服务器发送带有有害数据的请求(不使用您的页面,因此不进行安全检查)。