发送修改后的javascript
想象一下,一个javascript命令向PHP发送一个参数。让我们想象一下,他总是按如下方式发送:发送修改后的javascript,javascript,jquery,Javascript,Jquery,想象一下,一个javascript命令向PHP发送一个参数。让我们想象一下,他总是按如下方式发送: 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, suc
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){
}
});
我想知道用户或黑客是否可以修改该变量数据id,而不是发送一个参数
login=
,而是发送一个名为google=
的参数,他能做到吗?是的。用户可以向您的服务器发送他们喜欢的任何内容
您无法控制服务器边缘以外的任何内容。浏览器中的内容和到达服务器的内容由客户端和客户端用户控制
一般而言:
- 让未知的查询字符串参数被忽略
- 使用
- 实施通常的防御措施
- 让未知的查询字符串参数被忽略
- 使用
- 实施通常的防御措施
是的。用户可以向您的服务器发送他们喜欢的任何内容 您无法控制服务器边缘以外的任何内容。浏览器中的内容和到达服务器的内容由客户端和客户端用户控制 一般而言:
functions/a-php/read/read\u config.php
必须检查data\u id
的值,以确保它只指定您希望它指定的内容。除了Quentin编写的内容之外,这就是为什么您需要在服务器中验证表单数据的原因。因此,在这种情况下,functions/a-php/read/read\u config.php
必须检查data\u id
的值,以确保它只指定了您希望它指定的内容。听起来像是您希望通过不受信任的用户代理对敏感数据进行往返访问——即,您希望验证您收到的数据与发送的数据相同
如果这是您想要做的,您可以使用签名检查
在PHP中,并可用于对数据进行签名和验证
请注意,签名可能会使用户代理上的字符串看起来是加密的,但实际上不是。如果要阻止用户代理读取密码,也需要加密
或者,您可以将字符串存储在由键入的数据库中,然后将该不透明密钥发送给客户端 在PHP中生成不可用的随机键的地址
如果这不是往返问题,并且您正在与发送用户名和密码的第三方打交道,你真的应该停止使用密码了。听起来你想通过一个不受信任的用户代理对敏感数据进行往返——也就是说,你想验证你收到的数据与你发送的数据相同 如果这是您想要做的,您可以使用签名检查 在PHP中,并可用于对数据进行签名和验证 请注意,签名可能会使用户代理上的字符串看起来是加密的,但实际上不是。如果要阻止用户代理读取密码,也需要加密
或者,您可以将字符串存储在由键入的数据库中,然后将该不透明密钥发送给客户端 在PHP中生成不可用的随机键的地址
如果这不是一个往返问题,并且您正在与发送用户名和密码的第三方打交道,那么您真的应该立即停止使用密码。可能可以,因为JavaScript是一种基于客户端的语言。无论如何,您应该验证read_config.php中发送的数据。所以这不应该是黑客攻击的问题。攻击者可以发送他们想要的任何HTTP请求。不管你写什么JS代码,不要手工构建查询字符串。如果用户(例如)在密码中使用了
&
,则密码将中断。您可以使用encodeURIComponent
来处理这个问题,但是jQuery内置了一个转义系统:data:{login:user\u login,password:user\u pass}
它们可能可以,因为JavaScript是一种基于客户端的语言。无论如何,您应该验证read_config.php中发送的数据。所以这不应该是黑客攻击的问题。攻击者可以发送他们想要的任何HTTP请求。不管你写什么JS代码,不要手工构建查询字符串。如果用户(例如)在密码中使用了&
,则密码将中断。您可以使用encodeURIComponent
来处理这个问题,但是jQuery内置了一个转义系统:data:{login:user\u login,password:user\u pass}