我有一个来 self 网站的特定页面的简单发帖请求:
reqdata = 'text=' + mytext;
$.ajax({
type: "POST",
url: "/request.php",
data: reqdata,
cache: false,
success: function(html) {
alert(html)
}
});
它转到同一站点的另一个页面.. 所以第一页调用页面 mydomain.com/test.php
调用 http 请求到 mydomain.com/request.php
我如何在页面 mydomain.com/request.php
上识别请求来自的原始页面是 mydomain.com/test.php?
我希望确保请求只能从这个确切的页面 mydomain.com/test.php
完成,而不是从其他域或页面完成。
我使用 ajax 和 javascript 执行请求,因此我认为我无法添加隐藏的身份验证来确保整个过程的安全。因为每个值都是在原始页面源代码上看到的。
最佳答案
您似乎正在寻找一种方法来保护自己免受跨站请求伪造 ( XSRF )。
防止 XSRF 的常用方法是在您的页面上呈现一些时间有限的 key (只是一些 <script> var mySecret = <?php (someSecret) ?>
)并跟踪这些。例如,您可以使用 session ID 的第一个字符并检查请求数据是否包含此字段。您可以使用类似 ...&secret=mySecret
的方式将其添加到您的数据中当 session ID 包含此数据属性的第一个字符时,您接受该请求,否则您将在您的服务器上拒绝它(可能会出现错误代码 403)。
所以这个问题就是
best practices to avoid XSRF on my site
并且应该在信息安全堆栈交换上询问。
关于javascript - post请求来自哪个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36812404/