Называет ли ваше поле формы так же, как mysql, какую-то угрозу безопасности? - PullRequest
5 голосов
/ 24 января 2010

Есть ли причина, по которой вы должны или не должны называть поля формы точно такими же, как поля HTML?

<input type="text" name="my_field_1" id="my_field_1" /> --> mysql row my_field_1

или

<input type="text" name="myField1" id="myField1" /> --> mysql row my_field_1

Единственное, о чем я могу подумать, это, вероятно, соглашения об именах для HTML и Mysql (возможно, из личных предпочтений), а также небольшое предотвращение внедрения (очевидно, что имя поля должно отличаться больше ... но все значения должны быть проверены первыми в любом случае + использование реальной escape-строки).

Ответы [ 6 ]

2 голосов
/ 24 января 2010

Если вы проверяете, то нет, но не ограничивайте валидацию только тем, что вы ожидаете от формы.Что если у вас есть таблица комментариев со столбцом владельца и вы слепо создаете оператор обновления SQL из всех полей формы, потому что знаете, что там нет поля владельца?Что произойдет, если я использую TamperData, расширение Firefox, которое позволяет мне добавлять данные в запрос, и я добавляю поле владельца?

Не перебирать все поля и принимать их, убедитесь, что только те поля, которые вы ожидаетеесть и нет никаких дополнений!

2 голосов
/ 24 января 2010

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

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

Вторичный, очень отдаленный риск заключается в том, что вы выставляете имена столбцов в своей таблице. Так что если вы супер-параноик по поводу безопасности, вы можете присвоить полям формы имя, отличное от их столбца. Но я не вижу в этом реальной необходимости.

0 голосов
/ 24 января 2010

Нет, потому что вы должны предполагать, что любой злоумышленник в любом случае имеет доступ ко всей вашей базе исходного кода, поэтому присвоение им другого имени не уменьшит их возможности атаковать вас.

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

0 голосов
/ 24 января 2010

Это не риск для безопасности, если ваш сайт на 100% безопасен для SQL-инъекций Поэтому я предпочел бы беспокоиться об этом, чем о выборе / использовании имен полей.

0 голосов
/ 24 января 2010

Согласовано. Нет проблем.

Фактически, если вы называете поля такими же, как поля таблицы, вы можете сделать несколько крутых циклических схем, которые делают обновление или вставку в MySQL более автоматизированным.

0 голосов
/ 24 января 2010

На самом деле никто не будет знать, что вы использовали имена полей вместо пользовательских имен (за исключением некоторых типичных имен столбцов). Как они могут сейчас? Может быть, вы использовали собственные имена, а может и нет;)
Это облегчит ваш код, если вы будете использовать те же имена, и ваш код будет легче поддерживать.

Но прочитайте другие ответы, чтобы знать о проблемах, которые могут возникнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...