如何使jQuery(javascript)ajax表单数据发送的人类可读性降低


How can i make jQuery(javascript) ajax form data sent less human readable?

>使用Firebug或chrome控制台的人可以拦截提交的表单数据,然后切换一些值,例如。发件人的 ID 。我想知道我是否可以降低发送的数据的人类可读性,以便攻击者不想处理它。

我看到了这样的东西:

$.ajax({
    type: "POST",
    url: 'http://www.example.com/widget_category.php',
    data: "p=eyJUcmF6ZW5pUG9qYW0iOiIiLCJJREdydXBhIjoiMzA3IiwiSURQb2RHcnVwYSI6MzA3LCJQcm9kYXZhYyI6IiIsIk9rcnV6aSI6W10sIk9wc3RpbmUiOltdLCJDZW5hT2QiOi0xLCJDZW5hRG8iOi0xLCJTdGFuamFQcmVkbWV0YSI6W10sIk5hY2luaVBsYWNhbmphIjpbXSwiRmlsdGVyIjpbXX0=",
    dataType:'html',
    success: function(res){
        $('#limwidget').empty().append(res);
    }
    }); 

编辑:我看到这个问题被接受了不好。我只想指出,我正在验证服务器端收到的所有数据,这应该毫无疑问,但我只是想从数据库中隐藏真正的敏感数据(也许使它们也以某种方式签名时间戳并且因用户而异)。我意识到也许这个问题应该在服务器端(php)上考虑,所有敏感数据都应该在服务器端而不是客户端交换,这样我们就可以通过隐蔽来避免安全性。

感谢您的澄清

再编辑一次:我现在看到来自给定示例的 atob 函数的输出

eyJUcmF6ZW5pUG9qYW0iOiIiLCJJREdydXBhIjoiMzA3IiwiSURQb2RHcnVwYSI6MzA3LCJQcm9kYXZhYyI6IiIsIk9rcnV6aSI6W10sIk9wc3RpbmUiOltdLCJDZW5hT2QiOi0xLCJDZW5hRG8iOi0xLCJTdGFuamFQcmVkbWV0YSI6W10sIk5hY2luaVBsYWNhbmphIjpbXSwiRmlsdGVyIjpbXX0=

{"TrazeniPojam":"","IDGrupa":"307","IDPodGrupa":307,"Prodavac":"","Okruzi":[],"Opstine":[],"CenaOd":-1,"CenaDo":-1,"StanjaPredmeta":[],"NaciniPlacanja":[],"Filter":[]}

所以我想开始在客户端隐藏数据是没有用的。

您可以使用 atob() 和 btoa() 将数据编码为 base64,然后在服务器中对其进行解码。请注意,这样做只会混淆您的代码,而不会使其 100% 安全。

以下是有关 JavaScript 的 Base64 编码的一些信息。

https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding

您应该忘记客户端具有敏感逻辑并期望安全,没有办法做到这一点。

即使您"ofuscate"输出,该恶意用户也可以在 ofuscation 之前放置一个断点并随意更改值。

如果您担心有人可能会更改SenderID,那么假设对您的方案有效,则可以在服务器端验证发布SenderID是否与发起的请求相同。

即使进行此更改,他们也可以更改前端的任何内容。可以读取发送到客户端的所有内容,包括您使用的任何加密代码。这可能更难,但您将混淆与安全性混淆了。

混淆不会解决问题。

您应该优先获取服务器端代码来验证和清理来自前端的数据。

http://en.wikipedia.org/wiki/Security_through_obscurity

Base64,内容会长一些,但得到广泛支持,还有命令行工具来解码它。

我认为最安全的做法是假设来自客户端的所有数据都是邪恶的,并在您的服务器上添加代码以在适当的情况下进行验证和授权。您可以对数据进行编码,然后在服务器上对其进行解码,但JavaScript编码/加密不如您想要的有用。攻击者始终可以在浏览器中打开开发控制台,检查您的代码,然后运行您对他们的新恶意数据使用的任何加密方法。