Sprawdzanie referera "zabezpieczy" tylko dla przypadków kiedy ktoś będzie chciał sobie wpisać adres Twojego AJAX'owego zasobu do paska adresu przeglądarki. W takim wypadku $_SERVER['HTTP_REFERER'] będzie puste i możesz wypluć magiczne "<!-- Nie kradnij! --!>"

Losowe klucze są bardzo proste w działaniu. Robisz chociażby
sha1(rand()) i zapisujesz to do bazy albo chociażby sesji. Przy requeście sprawdzasz czy klucze się zgadzają. Jeśli tak, to drukujesz tajne informacje i usuwasz klucz z bazy/sesji. Jeśli nie, to wiadomo - "<!-- Nie kradnij! --!>"

Sposobów jest sporo. Ale tak jak napisałem wcześniej - to jest utrudnianie, a nie zabezpieczanie. Jeśli ktoś będzie na tyle ogarnięty, że będzie wiedział do czego służy Firebug, to na 99% obejdzie te utrudnienia.
[edit]Jak dla mnie chyba najlepszym sposobem byłoby szyfrowanie danych po stronie serwera i rozszyfrowanie ich po stronie JavaScript. W Firebug co prawda będzie dało się podejrzeć odpowiedź serwera, ale żeby ją rozszyfrować trzeba będzie grzebać w JS. Do tego jakiś JS Uglify (żeby zaciemnić kod JS) i będzie git