Являются ли ActiveRecord / nHibernate SQL поколения "безопасными"? - PullRequest
1 голос
/ 02 декабря 2008

Я делаю эту систему Stacked , и я создаю функцию поиска. И в этом процессе мне приходит в голову, что может AR / nHibernate Expression.Like (и его братья и сестры) могут быть не на 100% "безопасны", так как вы можете создавать такие вещи, как; "\ r \ ndrop database xxx; ---" и подобные вещи ...?

Я ожидаю, что они будут в безопасности, но я не уверен ...

Ответы [ 2 ]

4 голосов
/ 02 декабря 2008

NHibernate (и, соответственно, ActiveRecord) генерирует параметризованные операторы SQL в форме sp_executesql 'select blah from table where column = @p1', '@p1 varchar(10)', @p1 = 'drop database xxx;---' для запросов. Эти типы операторов SQL защищены от внедрения SQL, поскольку содержимое параметров не выполняется (в отличие от того, что было бы, если бы использовалась простая конкатенация).

Так что да, оба "в безопасности".

0 голосов
/ 02 декабря 2008

Если вы обнаружите ошибку безопасности, вам обязательно нужно ее зарегистрировать. Многие полагаются на такие вещи.

...