0

私はphpにかなり慣れていないので、ここで何をすべきか疑問に思います。

私のサイトのいくつかの機能については、ユーザーが何かをクリックした後のアクションを処理するphpスクリプトがあります。すなわち:

<a href='/php/delete.php?id=xxx'>delete</a>

<form action='/php/handleregistration.php' method='post'></form>

私のコードでは、これらのリンクはソースコードを表示すると簡単に表示されますが、他のWebサイトのコードを見ると、これらの種類の参照を見つけるのははるかに困難です。ほとんどが同じタイプのphpスクリプトで処理されていると思いますが、いくつかのjavascript/jQueryを使用しています。

だから、私の質問は、私はこれを行うべきですか?なぜ、そしてそれを行うための最良の方法は何ですか?

4

4 に答える 4

3

いいえ。URIは公開情報です。ブラウザがリクエストを行うには、ブラウザに送信する必要があります。ブラウザが情報を取得すると、ユーザーもその情報を取得します。URIを難読化すると、デバッグが必要になったときに生活が困難になります。

OTOH、あなたがすべきことは:

  1. 誰かにデータを編集させる前に認証/承認を実行します(「このユーザーはこれを削除できますか?」などのテストを含みます)。
  2. サーバー上のデータを変更するリクエスト(削除など)には、POSTリクエスト(リンクではなく)を使用します
于 2013-01-07T18:05:45.357 に答える
2

心配する必要はないと思います。常に安全なコードを記述し、データを使用して何かを行う前にデータを検証してサニタイズする必要があります。IE: id=xxx が有効であると仮定しないでください。誰かがスクリプト URL を知っているものを手動で入力する可能性があります。

あなたが目にするほとんどのサイトは、おそらくフレームワークか何らかの URL 書き換えを使用しています。これにより、URL の見栄えが良くなります (スクリプトも)。ただし、セキュリティの点であまり追加されません。これは、あいまいさによるセキュリティと見なすことができます。それは、自分が何をしているのかを知らない誰かが簡単に攻撃されるのを防ぐことに他なりません。熟練した攻撃者を止めることはできないため、サーバー側にセキュリティを実装する必要があります。

編集:

余談ですが、予想外の厄介な結果を防ぐためだけに、削除に POST を使用することをお勧めします。ティムが言ったように、削除確認ページが必要です。ユーザーがログインしていても、それが管理下にあるとは限りません。

width=0 と height=0 に設定された iframe を持つ Web サイトを想像してみてください src=http://yoursite.com/php/delete.php?id=xxx

これにより、ログインしているユーザーが自分のアカウントを削除する可能性があります。(または、パスワードの変更、クレジット カードへの請求など) を知らないうちに。

もちろん、GET を POST に変更しても、この問題が完全に解決されるわけではありませんが、Web アプリを保護するための多くのステップの 1 つです。

于 2013-01-07T18:06:16.577 に答える
1

サーバーには常にセキュリティを適用してください。最終的には、クライアント(Webブラウザー)で何が行われるかはほとんど問題になりません。

ただし、操作をより適切に表すために、GET、POST、PUT、DELETEなどのさまざまなHTTPメソッドを使用することをお勧めします(そうすることを強くお勧めします)。これは、マークアップ/ JavaScriptにわずかに影響を与える可能性があります。たとえば、HTTP DELETEメソッドを使用できるように、フォームに削除ボタンを配置します。

http://en.wikipedia.org/wiki/Representational_state_transferを参照してください

于 2013-01-07T18:04:41.543 に答える
1

違いはありません。誰でもブラウザの開発ツールの[ネットワーク]タブを表示して、サーバーに送信される内容を確認できます。

コードがどれほど難読化されていても、クライアント側にセキュリティはありません。

代わりに、サーバー上のすべてを検証してください。

于 2013-01-07T18:05:02.803 に答える