13.15. Zapobieganie atakom typu SQL Injection
Problem
Chcemy zabezpieczyć kod przed atakami SQL injection — zarówno ten, w którym wykorzystano bibliotekę DBI
, jak i ten, w którym użyto biblioteki ActiveRecord
.
Rozwiązanie
Zarówno w aplikacjach ActiveRecord
, jak i DBI
należy tworzyć instrukcje SQL zawierające znaki zapytania w miejscach, w których należy zastosować interpolację zmiennych. Zmienne należy przekazać razem z instrukcjami SQL do metody DatabaseHandle#execute
, a baza danych sprawdzi, czy w przekazanych wartościach prawidłowo zastosowano apostrofy (cudzysłowy).
Przeanalizujmy przykład prostej tabeli bazy danych zawierającej nazwiska osób:
use receptury; DROP TABLE IF EXISTS names; CREATE TABLE names ( imie VARCHAR(200), nazwisko ...
Get Ruby. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.