Модуль значки для JohnCMS 4.x.x

2.06K
.
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() скобки писали...
.
pop
# ДоХтор (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), то закрывающий тег ?> необязателен.
.
pop
ДоХтор, Незнал этого факта...

А есть ли разница между написанием '.$set['homeurl'].' и ' . $set['homeurl'] . ', ато ты исправил
.
# pop (10.09.2015 / 23:42)
ДоХтор, Незнал этого факта...

А есть ли разница между написанием '.$set['homeurl'].' и ' . $set['homeurl'] . ', ато ты исправил
Разницы для программы нет. Но есть разница для человеческого глаза. Кому как удобнее, тот так и пишет.
Всего: 82