ValekS, Короче здесь в теме пишется что эта переменная не фильтрованная и соответственно есть дыра на ней, я же хочу чтоб этой дыры небыло и спросил как её залатать! Выше уже предложили как, но с моими малыми знаниями я не смогу решить эту задачу... Вот и прошу помочь с этой дырой...
Я в архиве дал два файла где встречается эта переменная, выше я взял код из одного файла, ты его видел и я думаю что там дыра, тоесть нефильтрованная переменная, но могу и ошибаться!!
Может вот это дыра (взял со второго файла где эта переменная встречается) :
$search = $_GET['id'];
, если здесь дыра, то я пропишу твой второй совет $search = abs(intval($_GET['id'])), но как ты раньше выражался здесь на форуме, зачем фильтровать если в двиге и так хороший фильтр сделан то можна и так как ты первый вариант указал $search = $id;
Мне важно дыру закрыть и некие познания себе в мозги внести
# pop (10.09.2015 / 09:27)
Не сочти за глупость, а есть ещё какие-то варианты фильтрации зависящие от написания кода?
Конечно. Процитирую пост Симба
При записи в базу используй функцию mysql_real_escape_string(), а при выводе htmlspecialchars.
mysql_real_escape_string -- Экранирует специальные символы в строке, используемой в SQL-запросе.
htmlspecialchars() -- Преобразует специальные символы в HTML сущности.
А в твоём файле zn_yes.php была ошибка в предпоследней и последней строках.
ДоХтор, Ну всё может быть
... Мне более важно безопасность....
Что думаешь по поводу выше поднятого вопроса, действительно есть дыра в этом моде, иль нет??
# pop (10.09.2015 / 22:48)
ДоХтор, Ну всё может быть... Мне более важно безопасность....
Что думаешь по поводу выше поднятого вопроса, действительно есть дыра в этом моде, иль нет??
Ну так посмотри файлы из архива, я ведь для тебя их отредачил. На счёт дырявых скриптов - правило одно: все данные, принимаемые от пользователя, необходимо
проверять на корректность, и
фильтровать.
ДоХтор, Да я видел что ты дописал, вот это $search = abs((int)$_GET['id']);
вместо этого
$search = $_GET['id'];
Кстати, int ровно intval(как Валекс писал, для себя спрашиваю)?
И ты в подгрузе корневых файлов убираеш (), раньше этого не видел, это правильно?
# pop (10.09.2015 / 23:11)
ДоХтор, Да я видел что ты дописал, вот это $search = abs((int)$_GET['id']);
вместо этого
$search = $_GET['id'];
Кстати, int ровно intval(как Валекс писал, для себя спрашиваю)?
И ты в подгр
(int) - это альтернативный синтаксис. Разницы нет никакой, можно написать так
$search = abs((int)$_GET['id']);
а можно и так
$search = abs(intval($_GET['id']));
На счёт скобок () - в основном скобки используются в функциях, циклах и условиях. Реже - в выражениях, с целью указания последовательности выполнения операций(приоритеты). В случае с
require_once скобки не нужны, так как это не функция, а конструкция языка. Ну а зачем там написаны скобки х/з ... Раньше и возле echo() скобки писали...
# ДоХтор (10.09.2015 / 20:50)
А в твоём файле zn_yes.php была ошибка в предпоследней и последней строках.
Я сделал так
$back = $_SERVER['HTTP_REFERER'];
@header ("Location: '.$set['homeurl'].'/users/profile.php");
require('../incfiles/end.php);
а ты сделал так
$back = $_SERVER['HTTP_REFERER'];
header('Location: ' . $set['homeurl'] . '/users/profile.php');
require '../incfiles/end.php';
...
тоесь я забыл поставить ' в енд и там был закрыт сценарий до меня, а ты оставил сценарий незавершонным, без ?>..
pop, Если после php-кода нет другого кода (например html), то закрывающий тег ?> необязателен.
ДоХтор, Незнал этого факта...
А есть ли разница между написанием '.$set['homeurl'].' и ' . $set['homeurl'] . ', ато ты исправил
# pop (10.09.2015 / 23:42)
ДоХтор, Незнал этого факта...
А есть ли разница между написанием '.$set['homeurl'].' и ' . $set['homeurl'] . ', ато ты исправил
Разницы для программы нет. Но есть разница для человеческого глаза. Кому как удобнее, тот так и пишет.