写入列表时使用javascript屏蔽前6位数字

写入列表时使用javascript屏蔽前6位数字,javascript,c#,jquery,ajax,Javascript,C#,Jquery,Ajax,我有一个搜索表单,当用户按姓名搜索时,它会返回帐号、全名和SSN。我使用Ajax发布表单并处理数据返回。在Ajax post中,它构建了一个列表,列表以div的形式写入屏幕。在写入列表时,有没有办法屏蔽SSN的前6位数字 以下是帖子: //Submit form $(function submit() { $('form').submit(function (e) { e.preventDefault(); $.ajax({ url

我有一个搜索表单,当用户按姓名搜索时,它会返回帐号、全名和SSN。我使用Ajax发布表单并处理数据返回。在Ajax post中,它构建了一个列表,列表以div的形式写入屏幕。在写入列表时,有没有办法屏蔽SSN的前6位数字

以下是帖子:

//Submit form
$(function submit() {
    $('form').submit(function (e) {
        e.preventDefault();
        $.ajax({
            url: 'Home/TAPost',
            data: $('form').serialize(),
            dataType: "json",
            type: 'POST',
            success: function (data) {
                var options = data;
                $each(options, function (index, option) {
                    $("#resultsList").append('<li>' + response[option] + '</li>');
                });
               }
        });
        return false;
    });
});
DIV正在写入:

<section id="searchResults">
    <h2>Search Results</h2>
    <ul id="resultsList"></ul>
</section>

在处理社会保险号码时,你需要小心。将此数据发送到浏览器会使其易受攻击。即使我们使用HTTPS,并且禁用了浏览器缓存,大多数浏览器都包含一个网络窗口,可以让我看到进入浏览器的流量。因此,我可以看到AJAX调用和所有未屏蔽SSN的结果。例如,在IE中,我按F12键,进入网络选项卡,然后砰的一声,身份盗贼的梦想

应尽可能靠近原点屏蔽数据。也就是说,如果我只需要最后4个,为什么还要将完整的SSN从DB发送到我的web服务器?这意味着它存储在我的web服务器中,没有屏蔽。检查web服务器内存的人可以看到它。您应该做的是只发送来自DB的最后4个或任何原点。这样,您可以将数据暴露到尽可能少的暴露量中

在过去,我将SSN和屏蔽的SSN存储在不同的字段中。这样就不需要编写存储过程的人来屏蔽它。他们应该只选择蒙版字段。您甚至可以创建一个名为view\u UserDataMasked的视图,并授予您的IIS/web服务器用户名对此视图的访问权限,但不能访问具有完整SSN的表\u UserData。这将有助于防止潜在的SQL注入也暴露SSN


另外,我希望不用说,SSN应该与加密的DB备份一起存储在加密的DB中。当你处理受保护的个人信息时,你需要小心。一次黑客攻击可能会使您/您的公司损失数百万美元。

用户是否有理由看到完整的SSN?如果要屏蔽它,为什么要传输它并将其存储在客户机上?取决于缓存和加密,以及它所在的国家,因为你有一个美国军队的图标,我猜你甚至可能触犯了法律。我的建议是在服务器端进行过滤。用户需要查看它以验证调用方。您的建议是在DB的返回中屏蔽它吗?绝对没有任何方法可以100%防止有人在客户机上解密此数据,这正是您不应该在客户机上屏蔽它的原因。你应该在返回数据之前屏蔽服务器。如果他们只需要查看最后4个,则只从DB发送最后4个。我可以按F12键,看到大多数浏览器中的所有网络流量,所以即使你屏蔽了它,我也可以抓取每个SSN并将它们写下来。老实说,我过去所做的是创建了一个名为LastFourOfSSN的计算列。这样人们就不会忘记掩盖它。更好的是,我们以前在数据库中有一个视图,它被预先屏蔽了。只有某些用户帐户可以访问包含未屏蔽数据的真实表。我希望我的SSN没有进入您的数据库。。。