使用firebug或chrome控制台的人可以拦截提交的表单数据,然后切换一些值,例如。 发件人的身份证。我想知道我是否可以使数据发送的可读性更低,因此攻击者不会想要处理它。
我看到这样的事情:
$.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":[]}
所以我猜在客户端开始隐藏数据是没用的。
答案 0 :(得分:1)
您可以使用atob()和btoa()将数据编码为base64,然后在服务器中对其进行解码。请注意,这样做只会模糊您的代码,并且不会使其100%安全。
以下是有关JavaScript的Base64编码的一些信息。
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding
答案 1 :(得分:1)
即使进行此更改,他们也可以更改前端的任何内容。可以读取发送到客户端的所有内容,包括您使用的任何加密代码。它可能更难,但你混淆了安全性的混淆。
混淆不会解决问题。
您应优先考虑使用服务器端代码来验证和清理来自前端的数据。
答案 2 :(得分:1)
你应该忘记在客户端使用敏感逻辑并期望安全,没有办法做到这一点。
即使你是" ofuscate"输出,恶意用户可以在模仿之前设置断点并随意更改值。
如果您担心有人可以更改SenderID
,那么假设对您的方案有效,您可以在服务器端验证发布的SenderID
与发起的请求相同。
答案 3 :(得分:0)
Base64,内容会有点长,但受到广泛支持,还有命令行工具来解码它。
答案 4 :(得分:0)
我认为最安全的做法是假设来自客户端的所有数据都是邪恶的,并在您的服务器上添加代码以在适当的时候进行验证和授权。您可以对数据进行编码,然后在服务器上对其进行解码,但JavaScript编码/加密没有您想要的那么有用。攻击者可以随时在浏览器中打开开发控制台,检查您的代码,并运行您对其新恶意数据使用的加密方法。