Я очень плохо знаком со всем кодированием PHP / MSSQL и мне нужна помощь по предотвращению SQL-инъекций.
Я добавляю функцию простого поиска на веб-сайт, который использует базу данных MSSQL.
Код работает так, как я хочу, но он уязвим для SQL-инъекций.
Есть ли другой способ обеспечить это, кроме как подготовить заявления?
Я также не очень хорошо знаком с хранимыми процедурами.
Я пытался подготовить заявления без удачи (если я не делаю что-то не так, это, скорее всего)
Хранимые процедуры, с которыми я не знаком.
<?PHP
$tech = (isset($_POST['Technician'])? $_POST['Technician'] : null);
$sql = "SELECT * FROM Errors WHERE Error LIKE '%$tech%' or Description LIKE '%$tech%'";
$name = trim($_POST['Technician']);
if(empty($name)){
print '<script type="text/javascript">alert("Please enter an Error Code or Error Description")</script>';
exit;
}
$stmt = sqlsrv_query($conn, $sql);
if ($stmt) {
$rows = sqlsrv_has_rows( $stmt );
if ($rows === true) {
echo "";
} else{
echo '<script type="text/javascript">alert("Please enter a valid Term")</script>';
}
}
while($db_field = sqlsrv_fetch_array($stmt)){
print '<table align="center" style="position: relative; width:250px; text-align: center;">';
print '<tr>';
print '<td><a href="result.php?Error=' . $db_field['Error'] . '">'.$db_field['Error']."</a></td></tr>";
print "<tr>";
print '<td>'.$db_field['Description'].'</td></tr>';
//print "<tr><th>"."Cause"."</th>";
//print "<td>".$db_field['Cause']."</td></tr>";
//print "<tr><th>"."Resolution"."</th>";
//print "<td>".$db_field['Resolution']."</td></tr>";
print "</table><br>";
}
sqlsrv_close($conn);
?>
Я ожидаю, что SQL-инъекция потерпит неудачу при попытке.