|
|
|
| Профи эту фишку знают, но все же для новичков может быть полезно
Есть проект 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 таким спосбом - ВСЕГДА ИСПОЛЬЗУЙТЕ ЛИБО ХРАНИМКИ С ПАРАМЕТРАМИ ЛИБО ПЕРЕДАВАЙТЕ ПАРАМЕТРЫ ЧЕРЕЗ @ | |
|
| |
|
|
|
| + грамотно распределяйте права доступа. чтоб кирдык не случился, даже при таком (DROP TABLE Tbl2) стечении обстоятельств :) | |
|
| |
|
|
|
| Это не всегода спасет. Если пользователю разрешено изменение базы( по логике работы приложения ему это необходимо), то команду DROP можно заменить на DELETE.
Да и вааще про скл-инъекции много написано.
Смысл в том, чтобы не давать в приложении возможностей применения любых инъекций, способных повредить или изменить базу.
Из опыта работы своей конторы знаю, что многие пользователи с удовольствием поломали бы наши базы, имей они такую возможность. | |
|
| |