Ваш код уязвим для следующих атак. Атаки
1.) SQL-инъекция Атака , поскольку вы передали переменную непосредственно в SQL-запросы. Я смягчил его, используя подготовленные операторы
2.) Html-инъекции и XSS-атака: вам нужно будет обеспечить санацию для входных данных формы. я использовал intval()
для целых чисел и strip_tags()
для строк, предполагая, что вы хотите удалить опасный html.
3.) атаку с фиксацией сеанса. Я также устраняю это, используя session _regenerate_id()
Вот ваш код Re написано
<?php
$servername = "localhost";
$username = "db username goes here";
$pass = "your db password here";
$db_name = "your db name here";
// Create connection
$conn = new mysqli($servername, $username, $pass, $db_name);
// Check connection
if ($conn->connect_error) {
echo "Connection to db failed";
}
if(isset($_POST['SignIn'])) {
$Name = strip_tags($_POST['Name']);
$Sleep = intval($_POST['Sleep']);
$Soreness = intval($_POST['Soreness']);
$Fatigue = intval($_POST['Fatigue']);
$Energy = intval($_POST['Energy']);
$Stress = intval($_POST['Stress']);
$Total = $Sleep + $Soreness + $Fatigue + $Energy + $Stress;
$Comments = strip_tags($_POST['Comments']);
// prepare your data
// i stands for integers and s stands for string
$stmt = $conn->prepare("INSERT INTO YDP_Wellbeing (Name, Sleep, Soreness, Fatigue, Energy, Stress, Total, Comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("siiiiiis", $Name,$Sleep,$Soreness,$Fatigue,$Energy,$Stress,$Total,$Comments);
$stmt->execute();
if($stmt){
echo "data inserted successfully";
// create session
session_start();
// prevents session fixation attacks using session regenerate id
session_regenerate_id();
//
$_SESSION['alert-type'] = 'success';
$_SESSION['alert-head'] = 'Welcome!';
$_SESSION['alert-body'] = 'Thank You <strong>' . $Name . '</strong> You\'re Response Has Been Submitted.';
header("location: index.php");
}else{
echo "data insertion failed";
}
}
$stmt->close();
$conn->close();
?>