Просто интересно о проблеме безопасности. Сейчас я использую следующую функцию для удаления фильмов из моей базы данных:
function deleteVideo(video_id){
function mycallbackform(v,m,f){
if(v=="yes"){
$.ajax({
type: "POST",
url: "delete.php?action=video",
data: "video_id=" + video_id,
success: function(html){
if(html == "1"){
//$("#result").html(html);
$("#row_"+video_id).fadeOut("slow");
$("#result").show();
$("#result").html("<div class='notification success png_bg'> <div><?php echo $LANG_video_succesfull_delete; ?> </div></div>");
setTimeout(function(){ $('#result').fadeOut('slow'); }, 5000);
}else{
$("#result").show();
$("#result").html(html);
}
}
});
}
}
$.prompt('Are you sure?',{ buttons: { Ok: 'yes', Cancel: 'no'}, callback: mycallbackform});
}
На заднем конце исполняется следующий код:
/*** DELETE data ***/
/*** prepare the SQL statement ***/
$stmt = $dbh->prepare("DELETE FROM videos WHERE username=:username AND videos_id=:video_id");
$stmt->bindParam(':username', $currUser);
$stmt->bindParam(':video_id', $video_id);
/*** execute the prepared statement ***/
$stmt->execute();
В этом случае имя пользователя сохраняется в сеансе.
Может ли пользователь A удалить данные пользователя B с помощью этого кода?
Я подумал добавить запрос, чтобы проверить, является ли текущий пользователь тем же пользователем, который добавил видео в базу данных. Если нет, он не может удалить данные. Но необходимо ли это или этот код достаточно безопасен?
Заранее спасибо.