我已经查看了很多与此问题相关的答案,因为在stackoverflow上已经多次询问过这个问题。大多数答案似乎都涉及通过ajax调用的ajaxvariable.send()部分发送数据。我正在考虑使用一种我没见过的不同的解决方案(可能是错的,但我看了很多)。但是,由于它尚未在其他地方发布或建议,我担心我可能会打开安全问题的大门(或者我的方法可能出现的任何其他问题)。将JSON对象粘贴到URL变量中是否有问题,如果以下是真的吗?
假设以下内容:
(1)在对象中传输的信息量不大。
(2)放入传递的JSON对象的变量从发送页面上的数据库中提取,并在接收页面上对数据库进行检查(不是直接在查询中检查,而是针对一系列可能的将值放入PHP数组中以确认在传递的变量值完成任何操作之前没有任何更改。
Javascript,JSON(发送页面):
...
var getplaninfo = {};
getplaninfo["initialfee"] = document.getElementById("initialfee").value;
getplaninfo["monthlyfee"] = document.getElementById("monthlyfee").value;
var planinfo = JSON.stringify(getplaninfo);
ajaxRequest.open("GET", "index.php?choice=" + planinfo, true);
ajaxRequest.send(null);
PHP(来自在发送页面上替换div内容的include中):
if (isset($_GET["choice"])) {
$returned = $_GET["choice"];
$decode = json_decode($returned,true);
$initialfee = $decode["initialfee"];
$monthlyfee = $decode["monthlyfee"];
}
我问的原因是我对AJAX很新。我对PHP的安全性非常满意,但我对AJAX还不是很了解。我很感激你的时间。
答案 0 :(得分:1)
您所阅读的示例与上述想法之间的区别似乎是您通常会通过POST将数据传递到服务器脚本。您的想法运行GET请求并将数据传递到那里。
GET和POST有效负载之间的差异是GET有限制。请在此处详细了解该限制:What is the maximum length of a URL in different browsers?
当用户输入未正确清理时,AJAX请求的安全问题发生在接收数据的脚本中。例如。 SQL注入,XSS。