Параметрированный запрос И проверка ввода - это путь. Существует множество сценариев, в которых может произойти SQL-инъекция, хотя используется mysql_real_escape_string()
.
Эти примеры уязвимы для SQL-инъекции:
$offset = isset($_GET['o']) ? $_GET['o'] : 0;
$offset = mysql_real_escape_string($offset);
RunQuery("SELECT userid, username FROM sql_injection_test LIMIT $offset, 10");
или
$order = isset($_GET['o']) ? $_GET['o'] : 'userid';
$order = mysql_real_escape_string($order);
RunQuery("SELECT userid, username FROM sql_injection_test ORDER BY `$order`");
В обоих случаях вы не можете использовать '
для защиты инкапсуляции.
Источник : Непредвиденная инъекция SQL (при эвакуации Недостаточно)
К продолжению на ответе Charles Bailey вот моя установка мерзавца, которую это использует p4merge (свободный межплатформенный 3way инструмент слияния); протестированный на msys Мерзавце (Windows) установка:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
или, от оболочки окон cmd.exe, вторая строка становится:
git config --global mergetool.p4merge.cmd "p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
изменения (относительно Charles Bailey):
: http://www.perforce.com/product/components/perforce-visual-merge-and-diff-tools
<час>РЕДАКТИРОВАНИЕ (февраль 2014)
, Как указано [1 110] @Gregory Pakosz, последний msys мерзавец теперь "исходно" поддержки p4merge (протестированный на [1 112] 1.8.5.2.msysgit.0 ).
Вы можете дисплейный список поддерживаемых инструментов путем выполнения:
git mergetool --tool-help
необходимо видеть p4merge или в [1 114] доступный или в допустимый список. В противном случае обновите своего мерзавца.
, Если p4merge был перечислен как [1 117] доступный , это находится в Вашем ПУТЬ , и только необходимо установить merge.tool:
git config --global merge.tool p4merge
, Если это было перечислено как [1 120] допустимый , необходимо определить mergetool.p4merge.path в дополнение к [1 122] merge.tool:
git config --global mergetool.p4merge.path c:/Users/my-login/AppData/Local/Perforce/p4merge.exe
~
должен расшириться до корневого каталога текущего пользователя (так в теории, путь должен быть ~/AppData/Local/Perforce/p4merge.exe
), это не работало на меня $LOCALAPPDATA/Perforce/p4merge.exe
), мерзавец, кажется, не разворачивает переменные среды для путей (если Вы знаете, как получить эту работу, сообщите мне или обновите этот ответ) Как уже отвечено здесь (и здесь и здесь ), mergetool является командой для конфигурирования этого. Для хорошего графического frontend я рекомендую kdiff3 (GPL).
git mergetool
полностью настраивается, таким образом, Вы можете, в значительной степени выбрал Ваш любимый инструмент.
полная документация здесь: http://www.kernel.org/pub/software/scm/git/docs/git-mergetool.html
Короче говоря, можно установить значение по умолчанию mergetool путем установки пользовательской переменной конфигурации merge.tool
.
, Если инструмент слияния является одним из тех поддерживаемых исходно им, просто необходимо установить mergetool.<tool>.path
на полный путь к инструменту (замена <tool>
тем, что Вы настроили merge.tool
, чтобы быть.
Иначе, можно установить mergetool.<tool>.cmd
на небольшое количество оболочки, чтобы быть eval'ed во времени выполнения с переменными оболочки $BASE, $LOCAL, $REMOTE, $MERGED
набор в соответствующие файлы. Необходимо быть немного осторожными с выходом, редактируете ли Вы непосредственно файл конфигурации или устанавливаете переменную с эти git config
команда.
Что-то вроде этого должно дать аромат того, что можно сделать ('mymerge', вымышленный инструмент).
git config merge.tool mymerge
git config merge.mymerge.cmd 'mymerge.exe --base "$BASE" "$LOCAL" "$REMOTE" -o "$MERGED"'
, Как только Вы имеете, устанавливают Ваш любимый инструмент слияния, это - просто вопрос выполнения git mergetool
каждый раз, когда у Вас есть конфликты для разрешения.
p4merge инструмент от По необходимости является довольно хорошим автономным инструментом слияния.
Мне пришлось отказаться от дополнительного цитирования с помощью msysGit в Windows 7, не знаю почему.
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
Если вы делаете это через cygwin, вам может потребоваться использовать cygpath:
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge `cygpath -w $BASE` `cygpath -w $LOCAL` `cygpath -w $REMOTE` `cygpath -w $MERGED`'