Php 如何防止更新数据库的其他记录?
我有一个表,它从phpMyAdmin读取所有数据库,并用php代码显示它。 -我还可以更新表中的每个单元格,例如使用表中的行,该行等于我数据库中的ID,而列等于(名字、姓氏、密码),表示工作正常。 因此,如果用户单击表中的一个单元格,jquery将通过ajax发送参数ID和字段的列(名字、姓氏、密码)。 我有什么问题? 我的问题是,我如何防止haker或智能用户看到jquery代码,他就会这样做 理解他可以更改任何ID或密码参数的值,并且ajax可以更新数据库而不是正确的ID吗? supose I向用户表显示10行,其中ID为11-20。用户将更改ID参数ID,该参数ID等于500,可以结束Php 如何防止更新数据库的其他记录?,php,database,security,Php,Database,Security,我有一个表,它从phpMyAdmin读取所有数据库,并用php代码显示它。 -我还可以更新表中的每个单元格,例如使用表中的行,该行等于我数据库中的ID,而列等于(名字、姓氏、密码),表示工作正常。 因此,如果用户单击表中的一个单元格,jquery将通过ajax发送参数ID和字段的列(名字、姓氏、密码)。 我有什么问题? 我的问题是,我如何防止haker或智能用户看到jquery代码,他就会这样做 理解他可以更改任何ID或密码参数的值,并且ajax可以更新数据库而不是正确的ID吗? supose
$(document).ready(function()
{
var COLUME, VAL,ROW,STATUS,DATASTRING;
$('td').click(function() {
COLUME = $(this).attr('class');
});
//****************
$('tr').click(function() {
ROW = $(this).attr('id');
$('#display_Colume_Raw').html(COLUME+ROW);
//$('#display').html(COLUME+ROW);
$('#span' + COLUME + ROW).hide();
$('#input'+ COLUME + ROW ).show();
STATUS = $("#input" + COLUME + ROW).val();
});
//********************
$(".edittd").mouseup(function() {
return false;
});
//*************
$(document).mouseup(function() {
$('#span' + COLUME + ROW).show();
$('#input'+ COLUME + ROW ).hide();
VAL = $("#input" + COLUME + ROW).val();
$("#span" + COLUME + ROW).html(VAL);
if(STATUS != VAL){
$('#statuS').removeClass('statuSnoChange')
.addClass('statuSChange');
$('#statuS').html('THERE IS CHANGE');
DATASTRING=$('#display_Colume_Raw').html()+','+VAL;
//******ajax code
//dataString = $.trim(this.value);
$.ajax({
type: "POST",
dataType: 'html',
url: "./public/php/ajax.php",
data: 'DATASTRING=' + DATASTRING, //{"dataString": dataString}
cache: false,
success: function(data)
{
//alert(data);
$("#statuS").html(data);
}
});
//******end ajax
}
else
{
//alert(DATASTRING+'status not true');
}
});
});
显示前端代码没有意义,因为这是在后端实现的
在通过AJAX调用的方法中,只需检查用户是否具有执行请求操作的权限。您可以在方法顶部进行单独的检查,如果用户不允许,则返回该检查,也可以将其内置到删除查询本身中,例如。,通过添加WHERE子句,确保这些ID是允许用户删除的ID。您不能在MySQL中分配每行权限,以便用户可以查看/编辑a行,但B行不能
如果您必须要有一个解决方案,那么有一个解决方法会有点麻烦,那就是,不要对表使用直接查询(选择、插入等),而是编写执行某种身份验证和/或验证的存储过程。该过程可以执行您想要的任何类型的复杂验证—检查用户ID、检查列值等—并仅返回该用户有权查看和/或编辑的内容。请显示现有代码/方案。请查看。