Именование Ваших полей формы то же как mysql на самом деле излагают какую-либо угрозу безопасности?

Есть ли какая-либо причина, почему Вы должны или не должны называть свои поля формы точно тем же как поля 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).

5
задан BalusC 23 January 2010 в 23:29
поделиться

6 ответов

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

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

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

2
ответ дан 15 December 2019 в 01:01
поделиться

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

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

2
ответ дан 15 December 2019 в 01:01
поделиться

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

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

0
ответ дан 15 December 2019 в 01:01
поделиться

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

0
ответ дан 15 December 2019 в 01:01
поделиться

согласился. Без проблем.

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

0
ответ дан 15 December 2019 в 01:01
поделиться

Учитывая максимум n , вы хотите Верните наименьшее число, которое следует на 1-20.

Давайте посмотрим на набор от 1 до 20. Во-первых, он содержит ряд простых чисел, а именно:

2
3
5
7 
11
13
17
19

так, потому что он должен быть разделен на 19, вы можете проверить только кратные 19, потому что 19 - простое число. После этого вы проверяете, можно ли разделить на тот и т. Д. Если номер можно успешно разделить всеми простыми числами, его можно разделить на число 1-20.

float primenumbers[] = { 19, 17, 13, 11, 7, 5, 3, 2; };

float num = 20;

while (1)
{
   bool dividable = true;
   for (int i = 0; i < 8; i++)
   {
      if (num % primenumbers[i] != 0)
      {
         dividable = false;
         break;
      }
   }

   if (dividable) { break; }
   num += 1;
}

std::cout << "The smallest number dividable by 1 through 20 is " << num << std::endl;
-121 3429517-

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

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

0
ответ дан 15 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

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