我有一个简单的表单,它将表单数据发送到 update.php,然后将数据插入 MySQL 数据库的表中。
$.ajax({
url: '/actions/update.php',
type: 'post',
data: {
name: 'name-data',
description:'description-data'
},
success: function( data, textStatus, jQxhr ){
console.log(data);
},
error: function( jqXhr, textStatus, errorThrown ){
console.log(errorThrown);
}
});
表单正常工作并且数据已完美添加到数据库中。问题是,理论上,如果用户知道数据发布到的 URL(如果查看源代码,他们可能知道),那么他们可以访问该 URL 并绕过表单添加记录。例如访问/actions/update.php 将会向数据库添加一条空白记录。
是否可以阻止用户访问该文件/目录,同时仍允许将数据发布到其中?
最佳答案
Is there away to block users to that file/directory while still allowing data to be posted to it?
这是思考问题的错误方式。
如果客户端 JavaScript 可以发出该请求,那么用户就可以向同一个 PHP 文件发出任何请求。
相反,在 PHP 中,您需要验证传递的参数是否符合您的可接受定义。
例如,您可能需要检查name
和description
参数是否低于特定字符长度,或者当前登录的用户是否有权更新相关记录。
仔细思考什么是可以接受的,什么是不可以接受的。添加这些检查后,用户是否“访问该 URL 并绕过表单添加记录”就不再重要了。
关于php - 阻止用户通过访问端点 URL 输入 AJAX 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52238111/