2013-06-16 2 views
1

На моем сайте клиента есть раздел «онлайн-оценка», который состоит из 40 полей. Для каждого поля требуется пользовательский ввод, который у меня есть программа, позволяющая от 50 до 200 символов в зависимости от вопроса.безопасно ли иметь большую таблицу в базе данных?

Затем форма отправляется на почту клиента, но она также сохраняется в базе данных, поэтому клиент может проверить все формы позже.

Я использую codeigniter, и я использовал активные записи для предотвращения инъекций sql. Также я spambot-валидировал его с методом, который нашел в другом вопросе. У меня есть скрытые поля, скрытые с помощью css. Если значения заполнены или не совпадают, форма не проверяется. (Кстати, это достаточно или я должен добавить капчу?).

код что-то вроде этого:

<p class="mail"><input type="text" name="mail" id="mail" /></p> //then I hyde this with css 
<input type="hidden" name="mail" value="some value" /> 

, а затем я проверить его

if($this->input->post('mail', true) != '' AND $this->input->post('mail', true) != 'some value') 
{ 
    die('could not send your request'); 
} 
else 
{ 
    process form 
} 

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

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

Редактировать: что было бы правильным способом сделать это?

+0

'безопасно иметь большую таблицу в базе данных?' Иронично. База данных предназначена для хранения данных. –

+0

в порядке: да, это еще хуже, ergo да –

+0

, так что хорошо иметь действительно большой стол? если он заполняется несколько раз, он не может рухнуть? – Ant100

ответ

6

База данных предназначена для хранения данных.

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

Разбивка на несколько таблиц не имеет смысла.

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

Конечно, вы можете использовать captchas, но обычно я бы рекомендовал использовать его только в том случае, если у вас действительно есть проблемы со спамом.

Практика honeypot, которую вы описали, является, по крайней мере, сейчас хорошей.

Также независимо от того, как медленно ваше соединение, я не думаю, что передача этого маленького текста заполнит его.

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

+1

«Разбивка на несколько таблиц не имеет смысла». --- Ну, это имеет смысл с точки зрения производительности. – zerkms

+0

так лучше отделить его, если он слишком большой? @zerkms –

+0

@Gunr Jesra: для этого нет ответа на серебряную пулю, но разделение/осколки - довольно распространенная техника, когда у вас есть ** LOT ** данных – zerkms

1

Не увеличивайте сложность вашей системы хранения информации для размещения серверов. Принцип KISS - это то, о чем нужно хорошо знать. Базы данных предназначены для хранения информации, а в некоторых веб-приложениях имеются абсолютно огромные базы данных. Что касается безопасности, предполагая, что у вас очевидное преимущество, все должно быть в порядке.Если вы действительно хотите, чтобы вы могли добавить временную метку и IP-адрес в список сохраненной информации (если они еще не были там, что для целей безопасности и отладки часто должно быть), а затем добавить функцию, которая проверяет, как многие записи были недавно введены этим IP-адресом и блокируют кого-то, если они передают определенный порог, и если и только если у вас действительно возникли проблемы со спамом, вы можете добавить в капчу, но это, как правило, снижает удовлетворенность пользователей. Учитывая, что некоторые приложения загружают изображения, которые легко могут быть в десятках мегабайт, то есть миллионы символов, в базы данных, хотя в этот момент становится более эффективным хранить их в другом месте на сервере, сохраняя большие объемы текстовых данных в одном таблица не должна быть проблемой.

+0

Итак, когда дело доходит до изображений, я должен хранить их на сервере, а не в базе данных. Я посмотрю больше на timestamp и ip address (сначала мне нужно узнать, как я могу отслеживать IP-адрес пользователя и хранить его, хех), а затем реализовать логику, которую вы только что сказали. Большое спасибо! – Ant100

+1

@ Ant100 ip! = Пользователь, если вы хотите отслеживать пользователей, вам нужен правильный журнал в системе –

+0

@Dagon я вижу. Хм ... то, что относится к окружающей среде? – Ant100

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