Очистить переменные при отправке формы

у меня есть этот код, и я хотел бы знать, правильно ли я очищаю свой код (пользовательский ввод)
я практикую свое кодирование безопасности для системы, над которой я работаю
и я хотел бы знать, правильно ли я поступаю.

Если есть что-то, что я могу улучшить, чтобы сделать вещи более прочными, я бы очень хотел узнать о них.

ОБНОВИТЬ

после чтения суммы я изменил свое соединение с PDO, и если я понимаю, в настоящее время мне не нужно очищать запрос?

<?php
require_once 'app/helpers.php';
session_start();
$error = '';


if($_POST){



$itemtype = filter_input(INPUT_POST, 'itemtype', FILTER_SANITIZE_STRING);
$itemtype = trim($itemtype);
$display = filter_input(INPUT_POST, 'itemdisplay', FILTER_SANITIZE_STRING);
$display = trim($display);
$brand = filter_input(INPUT_POST, 'brand', FILTER_SANITIZE_STRING);
$brand = trim($brand);
$model = filter_input(INPUT_POST, 'model', FILTER_SANITIZE_STRING);
$model = trim($model);
$spec = filter_input(INPUT_POST, 'spec', FILTER_SANITIZE_STRING);
$spec = trim($spec);
$sn = filter_input(INPUT_POST, 'sn', FILTER_SANITIZE_STRING);
$sn = trim($sn);
$setname =  filter_input(INPUT_POST, 'setname', FILTER_SANITIZE_STRING);
$setname = trim($setname);
$itemstat =  filter_input(INPUT_POST, 'itemstat', FILTER_SANITIZE_STRING);
$itemstat = trim($itemstat);



if(empty($itemtype)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> תכניס את הפריט לקבוצה לא יפה! </div>';
}elseif (empty($display)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> אם לא נציג ניתן לו שם איך יקחו אותו? </div>';
}elseif (empty($brand)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> סליחה... מי יצר את הפריט? </div>';
}elseif (empty($model)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> רגע...איזה דגם זה? </div>';
}elseif (empty($spec)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> לא מגיע שתכתוב עליו כמה מילים? </div>';
}elseif (empty($sn)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> מספר סידורי זה הכי אחי (ושלא יהיה אותו דבר כמו של פריט אחר...לא נעים..) </div>';
}elseif (empty($setname)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>  אני חייב להיות בזוגיות...מה שם הסט שלי? </div>';
}elseif (empty($itemstat)){
$error = '<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>    לאחרונה סיימתי קשר רציני... מה הסטטוס שלי? </div>';
}else{
if(!empty(filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING)) || !empty(filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING)) || !empty($_FILES['file']['name'])) {

$uploadedFile = '';
if (!empty($_FILES["file"]["type"])) {
$fileName = $_FILES['file']['name'];
$valid_extensions = array("jpeg", "jpg", "png");
$temporary = explode(".", $_FILES["file"]["name"]);
$file_extension = end($temporary);
if ((($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $valid_extensions)) {
$sourcePath = $_FILES['file']['tmp_name'];
$targetPath = "items-img/" . $fileName;
if (move_uploaded_file($sourcePath, $targetPath)) {

$uploadedFile = $fileName ;

}
}
}

}
$stm = $link -> prepare("INSERT INTO item (item_desc,display,brand,model,spec,sn,set_name,status,item_pic) VALUES ('$itemtype','$display','$brand','$model','$spec','$sn','$setname','$itemstat','$uploadedFile')");

$stm->execute(array('item_desc' => $itemtype , 'display' => $display ,'brand' => $brand ,'model' => $model ,'item_desc' => $itemtype ,'spec' => $spec ,
'sn' => $sn ,'set_name' => $setname ,'status' => $itemstat ,'name' => $uploadedFile ));

$error = '<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>    יש לנו פריט חדש! </div>';


}
}
?>


<div>
<?= $error ?>

</div>

0

Решение

Вы дезинфицируете ввод пользователя и экранируете строки. Одно это не безопасно. Взгляните на использование подготовленных заявлений.
http://php.net/manual/en/mysqli.prepare.php

Это означает, что вы подготавливаете инструкцию SQL, затем привязываете свои параметры к этой инструкции, затем она выполняется и отправляется в ваши базы данных. Действительно хорошее объяснение этого (с красивыми диаграммами) — третий ответ в этой теме. Как PreparedStatement предотвращает или предотвращает внедрение SQL?

Пример кода взят из первого потока. Попробуй разобраться и понять, что это значит. Это легко следовать и легко реализовать.

function secured_signup($username,$password)
{
$connection = new mysqli($dbhost,$dbusername,$dbpassword,$dbname);
if ($connection->connect_error)
die("Secured");

$prepared = $connection->prepare("INSERT INTO `users` ( `username` , `password`    ) VALUES ( ? , ? ) ; ");
if($prepared==false)
die("Secured");

$result=$prepared->bind_param("ss",$username,$password);
if($result==false)
die("Secured");

$result=$prepared->execute();
if($result==false)
die("Secured");

$prepared->close();
$connection->close();
}

Надеюсь, это поможет вам в этой теме. Но я бы все же предложил опубликовать его для проверки кода на стеке обмена

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector