2011-08-22 49 views
0

我最近继承了一个大型网站。我一直在检查它的安全缺陷。使用javascript/mootools输入消毒功能?

我有下面的代码,当用户提交的更新自己的用户信息被称为:

// 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

你不应该依赖于客户端验证。很高兴有,所以你可以在发送给服务器之前提醒用户不正确的数据,但你也需要服务器端验证。 Javascript可能被禁用,或者恶意用户可能仅向服务器发送带有害数据的请求(不使用您的页面,因此没有安全检查)。