想象一下将参数发送给PHP的javascript命令。让我们想象他总是发送如下:
var data_id = 'login =' +user_login+ 'password =' + user_pass;
代码如下:
$.ajax({
type: "POST",
url: "functions/a-php/read/read_config.php",
data: data_id,
cache: false,
success: function(data_o){
}
});
我想知道用户或黑客是否可以修改该变量data_id,而不是发送参数login =
,而是发送名为google=
的参数,他能做到吗?
答案 0 :(得分:5)
是。用户可以将任何他们喜欢的内容发送到您的服务器。
您无法控制服务器边缘以外的任何内容。浏览器中发生的事情以及到达服务器的内容都在客户端和客户端用户的控制之下。
一般来说:
答案 1 :(得分:1)
除了Quentin写的内容之外,这就是您需要在服务器中验证表单数据的原因。因此,在这种情况下,functions/a-php/read/read_config.php
必须检查data_id
的值,以确保它仅指定您期望的值。
答案 2 :(得分:0)
听起来您希望通过不受信任的用户代理往返敏感数据 - 即您要验证您收到的数据与您发送的数据相同。
如果这是您想要做的,您可以使用签名检查。
在PHP中,openssl_sign
和openssl_verify
可用于签署数据并进行验证。
请注意,签名可能会使用户代理上的字符串看起来是加密的,但事实并非如此。如果您想阻止用户代理读取密码,您还需要加密。
或者,您可以将字符串存储在由crypto-strong pseudo-random key键入的数据库中,并将该不透明密钥发送到客户端。
Secure random number generation in PHP解决了PHP中无法生成的随机密钥的问题。
如果这不是一个往返问题,并且您正在与发送用户名和密码的第三方打交道,那么您应该完全停止使用密码。