powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Безопасность скрипта
10 сообщений из 10, страница 1 из 1
Безопасность скрипта
    #40050542
xokoki3608
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
<?php
if (isset($_POST['name']) && isset($_POST['text'])){

    // Переменные с формы
    $name = $_POST['name'];
    $text = $_POST['text'];
    
    // Параметры для подключения
    $db_host = "localhost"; 
    $db_user = "asdl"; // Логин БД
    $db_password = "asd"; // Пароль БД
    $db_base = 'asd'; // Имя БД
    $db_table = "users"; // Имя Таблицы БД
    
    // Подключение к базе данных
    $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);

    // Если есть ошибка соединения, выводим её и убиваем подключение
	if ($mysqli->connect_error) {
	    die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
	}
    
    $result = $mysqli->query("INSERT INTO ".$db_table." (user,mail) VALUES ('$name','$text')");
    
    if ($result == true){
    	echo "Информация занесена в базу данных";
    }else{
    	echo "Информация не занесена в базу данных";
    }
}
?>

<html>
<head>
 <title>Запись в БД через форму на php</title>
</head>
<body>
 <form method="POST" action="">
  <input name="name" type="text" placeholder="Имя"/>
  <input name="text" type="text" placeholder="Текст"/>
  <input type="submit" value="Отправить"/>
 </form>
</body>
</html>




Помогите обезопасить скрипт
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050555
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xokoki3608
Код: php
1.
2.
3.
    // Переменные с формы
    $name = $_POST['name'];
    $text = $_POST['text'];

xokoki3608
Код: php
1.
'$name','$text'

Гуглить по словам "SQL-инъекция"
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050574
xokoki3608
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mysqli_real_escape_string($name) = $_POST['name'];
mysqli_real_escape_string($text) = $_POST['text'];

Так?
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050578
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xokoki3608,

Код: php
1.
2.
    $name = $mysqli->real_escape_string($_POST['name']);
    $text = $mysqli->real_escape_string($_POST['text']);
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050585
xokoki3608
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DHDD,

Fatal error: Call to a member function real_escape_string() on a non-object in Z:\home\localhost\www\index.php on line 5


авторif (isset($_POST['name']) && isset($_POST['text'])){

// Переменные с формы
$name = $mysqli->real_escape_string($_POST['name']);
$text = $mysqli->real_escape_string($_POST['text']);
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050591
xokoki3608
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
автор<?php
if (isset($_POST['name']) && isset($_POST['text'])){

// Переменные с формы
$name = $mysqli->real_escape_string($_POST['name']);
$text = $mysqli->real_escape_string($_POST['text']);

// Параметры для подключения
$db_host = "localhost";
$db_user = "root"; // Логин БД
$db_password = ""; // Пароль БД
$db_base = 'register'; // Имя БД
$db_table = "user"; // Имя Таблицы БД

// Подключение к базе данных
$mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);

// Если есть ошибка соединения, выводим её и убиваем подключение
if ($mysqli->connect_error) {
die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$result = $mysqli->query("INSERT INTO ".$db_table." (name,mail) VALUES ('$name','$text')");

if ($result == true){
echo "Информация занесена в базу данных";
}else{
echo "Информация не занесена в базу данных";
}
}
?>
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050637
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xokoki3608
Fatal error: Call to a member function real_escape_string


ну так сначала
Код: php
1.
    $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);


а уже потом
Код: php
1.
2.
    $name = $mysqli->real_escape_string($_POST['name']);
    $text = $mysqli->real_escape_string($_POST['text']);
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40050688
kormot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xokoki3608 ,
1. Используй один тип кавычек для кода. Одинарные. Всегда.
2.
Код: php
1.
2.
3.
4.
5.
if ($result == true){
echo "Информация занесена в базу данных";
}else{
echo "Информация не занесена в базу данных";
}

это же неверно. Во-первых, false будет возвращено только в случае ошибки. Зачем тебе чтобы SQL ошибка возникала?
Во-вторых, если ошибки не было и SQL запрос выполнен, то результат будет не true, а mysqli ресурс. Оно конечно сработает с == (но не с ===), но всё-же приучай себя писать строгий код со строгими проверками чтобы реже садиться в лужи.
Ты же хочешь проверить условие "Что в таблицу была вставлена строка", так вот и проверяй результат mysqli_affected_rows
3. Замени на INSERT IGNORE, чтобы при дубликате username'ов была не ошибка а просто игнор.
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40051945
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй PDO и параметры
...
Рейтинг: 0 / 0
Безопасность скрипта
    #40052444
estic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kormot
Используй один тип кавычек для кода. Одинарные. Всегда.
О чем вы?

kormot
Во-первых, false будет возвращено только в случае ошибки. Зачем тебе чтобы SQL ошибка возникала?
:)

kormot
Во-вторых, если ошибки не было и SQL запрос выполнен, то результат будет не true, а mysqli ресурс.
Для INSERT будет true.

kormot
Ты же хочешь проверить условие "Что в таблицу была вставлена строка", так вот и проверяй результат mysqli_affected_rows
Зачем? Он же вставляет одну запись.

kormot
3. Замени на INSERT IGNORE, чтобы при дубликате username'ов была не ошибка а просто игнор.
Зачем? Из кода про дубликаты ничего не известно. Вполне возможно, что автора даже дубли e-mail устраивают. А если не устраивают, то такие ошибки точно не нужно игнорировать!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Безопасность скрипта
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]