0

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

Более конкретно, скажем, в моем db У меня есть столбец «Пол» (текст типа данных), и в моей форме я использую тег select и передаю в двух вариантах Мужской и Женский. Хотя в html пользователь имеет только 2 варианта выбора, но db этого не знает. Гендерный столбец в значительной степени примет что-либо. Я просто хотел знать, может ли пользователь неудобства игнорировать варианты выбора и как-то вставить глупый ответ в столбец «Пол»? Если да, то как я могу защитить от этого.

+1

Вы должны использовать валидация (http://guides.rubyonrails.org/active_record_validations_callbacks.html). Хорошо читайте: http://guides.rubyonrails.org/security.html – Nebojsa

ответ

2

Вещь, о которой вы говорите, - это проверки, которые необходимо выполнить перед вводом данных в базу данных. Недействительные данные могут поступать из любого места (непосредственно с контроллера или из графического интерфейса) и его ответственность модели за проверку данных до того, как они будут переданы в базу данных.

Пройдите через эти ссылки.

http://api.rubyonrails.org/classes/ActiveRecord/Validations.html http://guides.rubyonrails.org/active_record_validations_callbacks.html

+0

Право. Его легко проверить наличие или формат или длину, и я это сделал. Как я могу проверить вариант из поля выбора? В случае с полом, возможно, я могу добавить вставку, чтобы строка == «Мужской» || «Женщина» или что-то в этом роде. Но скажем, если есть вариант города, для меня было бы нецелесообразно перечислять все города. Есть ли лучший способ сделать это? – pratski

+0

Хороший. Те проверки должны выполняться на стороне контроллера. Например, контроллер знает список данных, которые он отправил в список, когда данные поступают из графического интерфейса, он должен выполнить проверку работоспособности со списком, который он использовал для заполнения, а также значением, возвращаемым из GUI. Это гарантирует, что пользовательский ввод всегда действителен. – LPD

+0

Хорошо, это имеет смысл. Что вы думаете об этом подходе. Использование метода «Validates Inclusion» на стороне модели. Будет ли это применимо. http://stackoverflow.com/questions/8582967/rails-using-arrays-with-froms-validation-inclusion-of – pratski

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