You cannot prevent proposal spoofing because there is no central authority that issues universal unique identifiers (UUIDs). UUIDs are arbitrarily assigned to the beacon and are not really guaranteed to be unique.
However, as soon as you pair your PDA with a beacon, the image is different. You can program a beacon (or, more specifically, a device with a beacon) to generate completely unique pairing information, such as a one-time password or some kind of secret handshake between your application and a pair of beacons.
A typical process flow would be:
the phone detects the ibeacon broadcast, reads UUID + Major / Minor.
the phone launches your application (using the didEnterRegion event).
your beacon application requests send a command to generate an encrypted response.
your application decrypts the response. If successful, display a happy face! In case of failure, display a sad face.
Moving forward, I suspect that most lighthouse systems will be implemented in this way. If and until the iBeacon standard is updated to provide encryption, it should be a hybrid ping + pair approach.
source share