2

外部APIに投稿されるフォームがあります。入力フィールドとして渡されるcustomer_tokenというパラメーターがあります。APIによる認証に使用され、すべての顧客に1つのトークンが割り当てられます。入力フィールドはFirefoxのFirebugに表示されます(非表示のフィールドですが)。

どうすれば非表示にできますか?

私が最初に思ったようにjavascriptを使用するオプション

フォームを送信する前に実行時にjavascriptを使用してその入力フィールドを作成し、すぐにフィールドを削除しても機能すると思いますが、それでもフィールドは一時的に表示されます。そのため、人が手動で取得できない場合でも、クローラーまたはスパイダー(正確な用語はわかりませんが、自動化されたスクリプト)がカスタマートークンを取得する可能性があります。これに対するより良い解決策はありますか?フォームの送信後、同じフォームが表示されたままになります。

Ikkeによって提案されたワンタイムトークンの概念を使用する

それがどのように機能するかわかりませんか?APIは、リクエストを処理するために正しいカスタマートークン値を必要とします。したがって、ワンタイムトークンを生成して返す場合でも、顧客トークンを含むリクエストを送信する必要があります。このようにして、誰でも私の顧客トークンの値を見ることができ、ワンタイムトークンを取得してそれを使用するためのリクエストを送信することもできます。では、どのように問題を解決するのでしょうか?

解決済み チェックフォームを直接投稿するのではなく、サーバーに投稿してからAPIに投稿する方法(セキュリティ上の理由から)? ありがとう、Sandeepan

4

2 に答える 2

5

これは不可能です。FirebugはDOMを実際の状態で読み取るだけなので、後の段階で追加された場合でも、取得することができます。

このセキュリティの方法は、隠すことによるセキュリティと呼ばれ、一種の非セキュリティです。代わりにサーバーにリクエストを実行させるなど、別の方法で解決する必要があります。

ユーザーにフォームをサーバーに送信させます。次に、curlを使用して、正しいユーザーコードを使用してWebサービスを呼び出します。

于 2010-08-18T08:02:26.927 に答える
0

恐れ入りますが、これは不可能だと思います。

Firebugは、DOMツリーを監視するため、Javascriptを介して挿入された場合でも、要素を認識します。この入力がセキュリティの脆弱性を露呈する場合、それを検証/修正するのはサーバー側のコードの仕事です。

APIの詳細は、誰かがこの質問にさらに詳しく答えるのに役立つ場合があります。

これがお役に立てば幸いです

于 2010-08-18T07:59:39.100 に答える