Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
如何确保在PHP中从特定JavaScript页面发布变量_Php_Javascript_Ajax_Lamp - Fatal编程技术网

如何确保在PHP中从特定JavaScript页面发布变量

如何确保在PHP中从特定JavaScript页面发布变量,php,javascript,ajax,lamp,Php,Javascript,Ajax,Lamp,有些任务只能由JavaScript完成 我的问题是,在通过JavaScript完成任务后,JavaScript代码必须将变量发送到PHP页面,据我所知,只能通过post、get和cookie完成,这意味着用户可能伪造变量并提交它 我想确保PHP页面接收的变量来自JavaScript页面。 到目前为止运气不好。解决办法是什么?你说得对,这肯定是个问题 通过确保值至少在可接受值的特定范围内,白名单/验证来自客户端的输入可以解决一些问题 您关心的用例具体是什么?如果我们对您的场景有更多了解,或许我们可

有些任务只能由JavaScript完成

我的问题是,在通过JavaScript完成任务后,JavaScript代码必须将变量发送到PHP页面,据我所知,只能通过post、get和cookie完成,这意味着用户可能伪造变量并提交它

我想确保PHP页面接收的变量来自JavaScript页面。
到目前为止运气不好。解决办法是什么?

你说得对,这肯定是个问题

通过确保值至少在可接受值的特定范围内,白名单/验证来自客户端的输入可以解决一些问题


您关心的用例具体是什么?如果我们对您的场景有更多了解,或许我们可以为您提供更多帮助。

如果您能描述您的特定场景以及需要避免的数据输入类型,我们可以为您提供更好的帮助

通常,您应该始终尝试验证客户端(JavaScript)上的数据,以便向用户提供更好的反馈(例如突出显示保留空白的必需表单字段)。认为这对用户来说是一种礼貌。


不管怎样,您都不应该信任来自浏览器的数据,在服务器上执行所有与安全相关的验证,也不应该关心使用了哪种客户端软件来收集数据(即JavaScript代码或某些硬编码的GET/POST数据).

正如其他答案所述,白名单确实是你唯一能做的事情——如果有人故意攻击你的网站,你得到的任何内容都不需要是有效的


大量客户端验证或cookie都不起作用,因为攻击者不需要使用浏览器来做坏事。

您可以在为页面提供服务时生成真实性令牌。然后检查响应是否包含相同的真实性令牌

你所描述的是不可能的。您可能应该做的是在服务器上确定有效值是什么,然后验证提交的值是否在该列表中;如果没有,那么就拒绝它。或者也可以使用验证码之类的东西……不管你在客户端进程上做了多少验证和模糊处理,在某个时候你必须接受一个足够专业的恶意用户可以/将伪造数据。问题是要弄清楚什么是“足够”,在这之后,增加的复杂性超过了安全方面可以实现的任何收益。花100美元保护0.01美元的资产不是一个好买卖。如何将javascript变量列入白名单?在任何可能的情况下它都是可见的吗?js文件将嵌入到第三方网页中,该网页将从主机页面检索变量。然后,这些变量将被发送到一个php页面,该页面将把变量保存到db中。我提出了两个想法,但如果有人知道内部情况,它们仍然可以利用。白名单的意思是只接受某些变量。如果您正在寻找一个输入“水果”的表单,那么您可以接受“橙色”、“香蕉”和“苹果”,但放弃“汽车”和“黑客”。您列出了一个简短的-valid-responses列表,并忽略其余部分。