【发布时间】:2019-02-13 17:26:14
【问题描述】:
我有一个简单的表单,它将表单数据发送到 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 会在数据库中添加一条空白记录。
是否可以阻止用户访问该文件/目录,同时仍允许向其发布数据?
【问题讨论】:
-
你在
update.php中尝试过header吗? -
如果您的项目是 Codeigniter 项目,那么将 CSRF 添加到您的表单可能有助于避免未经授权的随机帖子。你也可以在没有 Codeigniter 的情况下做到这一点,但这需要更多的工作。
-
在
update.php顶部尝试header('Location: somepage.php/'); -
您可以尝试通过从另一个文件导入或使用密钥来隐藏 url。我会说使用密钥
-
@ZainFarooq 不会导致无法访问数据