Использует Twig более эффективную практику безопасности, чем использование инструкции PHP include? [Дубликат]

Вы можете добиться этого, используя динамический TSQL (не забудьте использовать QUOTENAME, чтобы избежать атак SQL-инъекций):

Свертывает динамические столбцы в SQL Server 2005

SQL Server - динамическая таблица PIVOT - SQL Injection

Обязательная ссылка на Проклятие и благословения динамического SQL

7
задан Alan 27 March 2014 в 22:31
поделиться

7 ответов

Любая сторона сервера (при условии, что ваш сервер не скомпрометирован) безопасен. Выполнение этого:

$var = $_GET['var']';    
include $var . ".php";

небезопасно.

include "page.php"; 

является безопасным.

2
ответ дан Blake 26 August 2018 в 10:28
поделиться

Включить безопасно, если вы этого не сделаете:

  1. Включить удаленный файл, например www.someoneelsesssite.com/something.php
  2. Включить файл из пути, который пришел от клиента. www.mysite.com/bad.php?path=oops/here/is/your/passwords/file
  3. Включить файл из другого, возможно, испорченного источника, такого как база данных.

2 и 3 технически имеют оговорку, что если вы запретили . или / или на окнах \, вы, вероятно, в порядке. Но если вы не знаете, почему, вы не знаете достаточно об этом, чтобы рисковать. Даже если вы считаете, что база данных доступна только для чтения или иным образом защищена, разумно не предполагать, что, если вам действительно не нужно, что почти никогда.

Как указывает ответ pp19dd. Также важно, чтобы вы назвали свои расширения с расширением .php. Если вы установили apache (или какой-либо веб-сервер, который вы используете), чтобы проанализировать другой тип файла как PHP, это тоже безопасно. Но если вы не знаете наверняка, используйте .php исключительно.

1
ответ дан DampeS8N 26 August 2018 в 10:28
поделиться

Include можно злоупотреблять, если вы делаете что-то вроде этого:

include($_GET["page"]);

, а затем вызывают URL:

myscript.php?page=index.php

злоумышленники могут затем замените index.php на hxxp://hackerz.ru/install_stuff.php, и ваш сервер с радостью запустит его.

include сам совершенно безопасен. Просто убедитесь, что вы всегда проверяете / избегаете ввода.

2
ответ дан Halcyon 26 August 2018 в 10:28
поделиться

Я использую этот метод.

<?php include (dirname(__FILE__).'/file.php');
-1
ответ дан husnixs 26 August 2018 в 10:28
поделиться

Лучше всего сделать, чтобы страница, которую вы пытаетесь включить, существует в первую очередь. Реальные лазейки безопасности приходят, когда ваша страница включения обрабатывается из какого-либо пользовательского ввода, такого как переменная URL. ?include=page.php Пока вы осторожны, вы должны быть в порядке.

if(is_file($file)) {
    //other code, such as user verification and such should also go here
    include $file;
}
else { die(); }
1
ответ дан mseancole 26 August 2018 в 10:28
поделиться

Самая большая проблема с включением, скорее всего, сменяет расширение имени файла с PHP на то, что автоматически не выполняется веб-сервером. Например, library.inc или config.inc. Вызов этих файлов с помощью веб-браузера будет показывать код вместо его выполнения - и будут показаны любые пароли или полезные подсказки.

Сравните config.php, который может иметь в нем пароль с config.inc. Вызов config.inc в большинстве случаев показал бы, что такое пароль базы данных.

Существуют программисты, которые используют расширения .inc для библиотек. Предпосылка заключается в том, что они не будут находиться в каталоге, доступном веб-серверу. Тем не менее, меньшие программисты-параноики могут сбрасывать этот файл в удобный веб-каталог.

В противном случае убедитесь, что вы не включили файл, который был передан строкой запроса каким-то образом. Пример: include( $_GET['menu_file'] ) & lt; - это очень неправильно.

3
ответ дан pp19dd 26 August 2018 в 10:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: