В одном из выпусков известного веб-комикса xkcd мать поднимает телефонную трубку. Звонят из школы, где учится её сын. «Он опять что-то сломал?» — спрашивает она. «В некотором роде, — отвечает телефон. — Скажите, вашего сына в самом деле зовут Роберт’); DROP TABLE Students; ––?»
«Конечно», — отвечает она. Выясняется, что из-за кода SQL в имени школа из комикса лишилась базы данных с оценками учеников за целый год. «Надеюсь, это научит вас фильтровать входные параметры», — говорит в конце героиня.
Шутки шутками, но люди сталкиваются с подобной проблемой не только в комиксах. «Би-би-си» рассказывает об одной из жертв прогресса — американке по фамилии Null. Перед свадьбой будущий муж предупредил её, что эта фамилия порой вызывает трудности. Он не шутил.
Первая же попытка купить авиабилет через интернет закончилась провалом. Большинство сайтов, которые торгуют авиабилетами, выдавали ошибку. Они игнорировали слово «Null», введённое в форму, и требовали заполнить поле «Фамилия» снова.
Источник ошибки очевиден каждому, кто знает SQL. Cистемы управления базами данных могут считать значение Null признаком того, что в поле отсутствует информация. О том редком, но вполне реальном случае, когда слово «Null» — это и есть данные, разработчики систем продажи авиабилетов не подумали.
И не только они. Проблемы преследуют обладательницу редкой фамилии повсюду. Она столкнулась с аналогичной ошибкой при попытке отправить налоговую декларацию, а её мужу пришлось потрудиться, чтобы оформить платежи за коммунальные услуги.
Сложность заключается в том, что каждый такой случай уникален. Если позаботиться о правильной обработке фамилии Null, найдётся что-нибудь ещё. Есть люди, у которых фамилия длиннее места, отведённого под неё в базе данных. У других фамилии просто нет. У третьих имя и фамилия идут не в том порядке, на который рассчитывали разработчики. Предусмотреть всё почти невозможно.