Jak nie idki, to co?
Hashe obiektów, czy podobne coś. Wspomniany już frejmłork powinien takie coś dostarczyć.
Powinny to być jakieś abstrakcyjne na pierwszy rzut oka wartości, trudne do skojarzenia z istniejącymi w bazie obiektami. Najważniejsze - nie będące sekwencją. I niech jeszcze zmieniają się z sesji na sesję, a co.
ID-ki i formularze do tego właśnie przecież służą, nie głośmy herezji. User wypełnia forma / klika w link i wysyła w ten sposób żądanie, skrypt je analizuje, sprawdza pod kątem poprawności (np. uprawnienia, spójność, zgodność z logiką systemu) i - jeśli potrzeba - uaktualnia model danych, czyli bazę. Tak to działa i działać powinno.
Nie głosimy herezji, próbujemy tu tylko walczyć z antypatternami

Formy służą do tego, o czym napisałeś i tak to działać powinno ale - na litość - nie ma powodów do pchania w nie surowych danych z bazy, lecz tylko tych, które zostały świadomie wystawione. Jeśli zamiast ID-ków użyjesz hash-y, pierwszy z brzegu spryciarz nie będzie w stanie zniszczyć Ci zawartości celując w jakieś okoliczne wartości z sekwencji, żeby daleko przykładu nie szukać.
Przeczytałem tylko początek, dalej mi się nie chciało, bo już późno

Przedstawiony tu sposób jest tyleż naiwny, co niepraktyczny. Co najwyżej 15-to znakowe bazy do hashowania czegokiolwiek (nie tylko haseł) nie są już modne w tym sezonie

Wystarczy użyć dwa, trzy, niech nawet i cztery razy dłuższych i odporność na reverse eng. znacząco rośnie. Dodajmy do tego możliwość zastosowania nie jednego a kilku różnych algorytmów hashujących, możliwość preprocessingu wejścia i postprocessingu wyjścia (jeśli komuś mało) - i co, wychodzą niezłe hashcze?
