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.