Witam. Głowie się nad tematem dotyczącym wydajności i bezpieczeństwa strony web, pod kątem ataku xss i sql injection. Nie wchodząc w cały kod podam najważniejsze linie, które odgrywają najważniejszą rolę. Mianowicie mamy walidację na tym przykładzie zwykłych liczb. Która opcja sprawdza się lepiej? A może macie inne spostrzeżenia i rozwiązania. Opcji drugiej się uczę więc mogą być jakieś błędy ale tu chodzi o samą mechanikę kodu.
Opcja 1.
if ((isset($_POST["select_notmess"]) and ($select_notmess = $_POST["select_notmess"])) == true){
$select_notmess = $_POST['select_notmess'];
$select_notmess = strip_tags($select_notmess);
$select_notmess = htmlentities($select_notmess);
$select_notmess = str_replace(' ', '', $select_notmess);
$select_notmess = trim($select_notmess);
$select_notmess_ok = $select_notmess;
if (is_numeric($select_notmess_ok) == true){
if (($select_notmess_ok > '0') and ($select_notmess_ok < '3') == true){
queryMysql("UPDATE $baza11 SET for_mes='$select_notmes_ok' WHERE id='$id'");
if (mysqli_affected_rows($connection) == 1){
$json['u_notmess_sukces'] = true;
}else{
$json['u_notmess_serv'] = true;
}
$connection->close();
}else{
$json['u_notmess_false'] = true;
}
}else{
$json['u_notmess_false'] = true;
}
}
Opcja 2
if ((isset($_POST["select_notmess"]) and ($select_notmess = $_POST["select_notmess"])) == true){
$select_notmess = $_POST['select_notmess'];
$select_notmess_ok = $select_notmess;
$query = "UPDATE $baza11 SET ";
$query .= "for_mes=? WHERE id=? ";
if (!$stmt = $this->dbo->prepare($query)){
$json['u_notmess_false'] = true;
}
if (!$stmt->bind_param("ii", $select_notmess_ok, $id) || !$stmt->execute() || !$stmt->store_result()){
$json['u_notmess_false'] = true;
}
if ($stmt->mysqli_affected_rows($connection) == 1){
$stmt->bind_result($select_notmess_ok, $id);
$json['u_notmess_sukces'] = true;
}else{
$json['u_notmess_serv'] = true;
}
}