我最近继承了一个大型网站。我一直在检查它是否存在安全漏洞。
我有以下代码,当用户提交用户详细信息的更新时调用该代码:
// 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();
没有做任何事情。还没有服务器端输入验证,因此这是一个很大的安全漏洞。
我需要检查客户端以确保合法用户可以输入他们的数据,并且是否有库函数可以为我执行所有这些检查(我找不到)?当它到达服务器时,我是否将其恢复为原始格式,或者将其粘贴到数据库中?
答案 0 :(得分:2)
MooTools采用stripTags
方法,我认为这就是你想要的:http://mootools.net/docs/more/Types/String.Extras#String:stripTags
我可以补充一点,你应该从不进行JavaScript清理单独?始终对传入的用户输入进行服务器端验证和清理。看到使用ASP.NET时,请检查以下链接:
答案 1 :(得分:2)
您不应该依赖客户端验证。它很高兴,因此您可以在将不正确的数据发送到服务器之前提醒用户,但您还需要服务器端验证。 Javascript可能被禁用,或者恶意用户只能向您的服务器发送包含有害数据的请求(不使用您的页面,因此无需进行安全检查)。