Каков наилучший способ защитить запрос GET или есть ли более безопасные альтернативы?
Я использую пару запросов GET на своем веб-сайте для создания веб-страницдинамически и для удаления записей на основе идентификатора.
Последнее беспокоит меня немного, потому что люди могут просто изменить URL-адрес на любой файл, который они хотят удалить.
Чтобы иметь доступ к удалению-файлу нужно войти в систему и иметь определенные разрешения, что приведет к ошибке, если у них недостаточно прав.
Я натолкнулся на действительно старый пост SO ,утверждая, что вы должны использовать функцию mysqli_real_escape_string
, чтобы сделать ее по крайней мере более безопасной.
Я также читал о том, что проверка действительно важна, поэтому я подумал о том, чтобы проверить, является ли идентификаторфактическое целое число или нет.
Есть еще одно сообщение , в котором говорится, что скрывать запрос в URL в основном бесполезно, поскольку запрос всегда будет частью URL.
Это мой файл удаления, он использует два утверждения, одно удаляет реальное сообщение, а другое удаляет связанные изображения с этим сообщением.
include('./utils/auth.php');
require('./utils/db.php');
$stmt_1 = $connect->prepare('DELETE FROM `dias` WHERE diaserie_id = ?');
if($stmt_1) {
$id = $_GET['id'];
$stmt_1->bind_param('i', $id);
if($stmt_1->execute()) {
// Als de afbeeldingen uit de database zijn, verwijder dan ook de serie zelf
$stmt_2 = $connect->prepare('DELETE FROM `diaseries` WHERE diaserie_id = ?');
if($stmt_2) {
$stmt_2->bind_param('i', $id);
if($stmt_2->execute()) {
echo "Both the files and post have been deleted.";
} else {
echo "The files have been deleted, the post iself could not be deleted.";
}
}
} else {
echo "Files and post could not be deleted.";
}
}