2014-01-28 6 views
1

Я младший PHP-разработчик, который в настоящее время работает над проектом с небольшой командой. Это первый раз, когда я работал в команде по проекту, поэтому я изучаю много и строию навыки работы в команде.Уязвимость уязвимости PHP-формы?

Есть одна конкретная вещь, которую я заметил, что мои коллеги-разработчики делают, и я считаю, что это может быть большой угрозой безопасности. При создании форм они будут указывать имя ввода в имени базы данных. Это означает, что везде, где публикуются данные, они могут использовать отличный для каждого цикла, проходящего через массив POST. Конечно, это довольно и легко, но я хочу, чтобы пользователи видели имена столбцов?

Я не уверен, что это создает угрозу безопасности (первое, что я думаю о SQL-инъекции), но если он делает то, что можно сделать?

Я полагаю, вы могли бы хэш имена входов? Тем не менее, это не полностью безопасно на 100%. Что делать, если на странице формы имена называются «apple64», «banana99», «chickens», а затем в файле PHP они преобразуются в соответствующие им имена столбцов?

Пункт моего вопроса состоит в том, чтобы найти общую практику для этой (возможной) уязвимости безопасности.

+0

Когда вы вставляете пароль в db, он будет base64_encoded или используйте md5, чтобы ваш пароль был безопасным. Проверьте, не является ли он непустым или специальным символом html или html-сущностями, все это sql-инъекция –

+2

imho, если вы не помните, доверяя вход пользователя и проверяя ввод, чем нет проблем с именованием полей, таких как столбцы. Более того, я считаю, что это хорошая практика. Это хороший способ для новых членов команды быстро интегрировать в код. Представьте себе, если бы каждое поле было снабжено хэшированным именем, тогда вам нужно было бы перевести каждый хэш для себя, чтобы узнать, что это такое. – DarkBee

+0

@ DarkBee Конечно, это определенно случай, но безопасность всегда должна быть первой ИМО. Если это не представляет угрозы, но я полностью согласен с вами (что, я думаю, вы предлагаете) – jskidd3

ответ

1

Такая общая практика называется "белый список".

Вы относительно положительно относитесь к этой уязвимости. И для младшего разработчика у вас очень хороший глаз. По сути, большинство людей, которые называют себя «профессионалами», никогда не беспокоятся о таких вопросах.

Таким образом, чтобы предотвратить обычную инъекцию SQL, а также предотвратить случайный доступ к полям таблицы (пользователю может быть отказано в некоторых из них), вы должны проверить свои данные для почтовых сообщений перед заранее написанным «белым списком». В качестве примера можно привести my approach for either classic mysql or PDO.

-1

При разработке, вы должны дать пользователю минимальную информацию. Заголовок/Название БД/Название столбца и т. Д.

Риск внедрения sql существует, если ваши формы не являются безопасными. Чтобы управлять своими запросами sql, вы должны подготовить их и проверить, есть ли у переменной специальные символы.

Документация о п.д.о. http://php.net/manual/en/pdo.prepare.php

Хороший "как" о SQL инъекций: http://www.unixwiz.net/techtips/sql-injection.html

+0

Я их готовлю! Это не совсем ответ на то, что я прошу (не будучи грубым). Я спрашиваю, является ли угроза для пользователей знать имена столбцов, просматривая исходный код и глядя на значение атрибута имени для поля ввода. Подготовка к ним и т. д. - это основная практика для меня :) – jskidd3

+0

Но вы не может параметризовать имена столбцов с помощью PDO, Dimi. – Stan

+0

@ jskidd3 Как вы «подготавливаете» имена столбцов? – Gumbo

Смежные вопросы