Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подводные камни ADP
 
 автор: FORMAT   (01.04.2009 в 15:58)   личное сообщение
 
 

Профи эту фишку знают, но все же для новичков может быть полезно
Есть проект adp
Допустим там Есть 2 таблицы Tbl1 и Tbl2

Если указать выполнение какого либо запроса в следующем виде


Dim str1 As String
str1 = "SELECT * FROM Tbl1 Where IdTbl1 = " & Me.Поле1.Value
CurrentProject.Connection.Execute (str1)

то на выходе получим результат - выбор всех значений из таблицы Tbl1 в котором IdTbl1 равно значению, введенному в поле1

Это достаточно распространенный вид кода, применяемый новичками.

так вот, если ввеcти в Поле 1 следующую строчку ( не забывайте, что там есть таблица Tbl2 )
1 DROP TABLE Tbl2, то кирдык приснится таблице 2.



Отседа выводы - никогда нельзя передавать параметры в adp таким спосбом - ВСЕГДА ИСПОЛЬЗУЙТЕ ЛИБО ХРАНИМКИ С ПАРАМЕТРАМИ ЛИБО ПЕРЕДАВАЙТЕ ПАРАМЕТРЫ ЧЕРЕЗ @

  Ответить  
 
 автор: KrukVN   (01.04.2009 в 19:46)   личное сообщение
 
 

+ грамотно распределяйте права доступа. чтоб кирдык не случился, даже при таком (DROP TABLE Tbl2) стечении обстоятельств :)

  Ответить  
 
 автор: FORMAT   (02.04.2009 в 11:10)   личное сообщение
 
 

Это не всегода спасет. Если пользователю разрешено изменение базы( по логике работы приложения ему это необходимо), то команду DROP можно заменить на DELETE.
Да и вааще про скл-инъекции много написано.
Смысл в том, чтобы не давать в приложении возможностей применения любых инъекций, способных повредить или изменить базу.

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

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList