Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使发送的jQuery(javascript)ajax表单数据的可读性降低?_Javascript_Php_Jquery_Ajax - Fatal编程技术网

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

如何使发送的jQuery(javascript)ajax表单数据的可读性降低?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,使用firebug或chrome控制台的人可以截取提交的表单数据,然后切换一些值,例如。 发件人的ID。我想知道是否可以降低发送的数据的可读性,以便攻击者不想处理它 我看到了这样的情况: $.ajax({ type: "POST", url: 'http://www.example.com/widget_category.php', data: "p=eyJUcmF6ZW5pUG9qYW0iOiIiLCJJREdydXBhIjoiMzA3IiwiSURQb2RHcnVwY

使用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=


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

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

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


Base64,内容会稍长一些,但得到广泛支持,还有命令行工具可以对其进行解码。

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

混淆不能解决问题

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


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

您应该忘记在客户端使用敏感逻辑,并期望安全,这是无法做到的

即使在输出被“OfDiscate”的情况下,那个邪恶的用户也可以在OfDiscation之前放置一个断点并随意更改值


如果您担心有人会更改
SenderID
,那么,假设对您的场景有效,您可以在服务器端验证发布的
SenderID
与启动请求相同

如果您正在创建加密和描述代码,那么您可以简单地以安全的方式传递数据,就像人类无法读取的表单一样。首先,不要将敏感数据暴露给前端。仅公开加密值,然后在服务器端解密。始终编写前端和后端代码,就像用户或恶意用户可以看到和修改所有内容一样(因为他们可以)。因此,您的意思是攻击者无法调用
btoa()
自己,然后使用
atob()重新加密
?@JamesDonnelly人类可读性差并不意味着它不能被读取。这意味着更难阅读。很明显,在前端,任何足够优秀的人都可以窃取您的数据。首先尝试修改数据的人将能够识别数据是Base64格式的。你的回答没有提到加密的盐分。如果它在前端盐分加密是无用的,因为攻击者可以看到盐分密钥。编码到B64只会混淆代码,我已经知道。JavaScript有
atob()
btoa()
方法,可以在Base64之间进行转换。GNU/Linux cmd line工具是
Base64
(使用
Base64-d
进行解码)我的意思是JavaScript允许攻击者解密这些值。Base64可能可读性较差,但它肯定不是防止攻击的解决方案。很好的解释…+1
{"TrazeniPojam":"","IDGrupa":"307","IDPodGrupa":307,"Prodavac":"","Okruzi":[],"Opstine":[],"CenaOd":-1,"CenaDo":-1,"StanjaPredmeta":[],"NaciniPlacanja":[],"Filter":[]}