「安全」の意味を明確にする必要があります。正確には何に対して安全ですか?何を心配していますか?
とはいえ、https (http over SSL) は良い出発点です。これにより、デバイス (またはブラウザー) に対して Web サイトを認証できるようになり、ユビキタスになります。
デバイスを認証したい場合は、もう少し注意が必要です。共有シークレット (乱数) を生成して保存し、最初にサイトに接続するときにそれを GET/POST で提供します。これには多くのバリエーションがありますが、単純なものはすべて共有シークレットを確立することから生じます。それ以外はおそらくやり過ぎです。これにより、次回接続時に同じデバイスが再び接続されていることを認識することができます。デバイスがログインするためのパスワードのようなものだと考えてください (ただし、単語である必要はなく、おそらく単語であってはなりません)。
これの難点は、プログラムが削除されるとその秘密が失われることです。正確に何をしたいかによっては、次にプログラムを同じデバイスで実行するときに確立する必要があるため、問題になる可能性があります。新しい秘密。その場合、今回接続するデバイスが以前に接続したデバイスと同じであることを知る方法はありません。それが必要な場合は、ある種のリセット メカニズムを使用する必要がありますが、これは実行が難しく、デバイスではなくユーザーを認証することになります。
iphone には一意の識別子がありますが、それは実際には秘密ではなく、それを提供しても、特定のデバイスが接続されているという証拠にはなりません。それを提供しても害はありませんが、身元の証明というよりも、「私はデバイス foo です」というアサーションのようなものです。ログインのユーザー名の部分のようなものだと考えてください。それでも共有シークレットが必要です。