2008-12-02 2 views
1

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

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

ответ

4

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

Так что да, оба являются «безопасными».

+0

Спасибо, отлично :) – 2008-12-02 04:03:47

0

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