私は自分のサイトでこれを自分自身で確認することができますので、私は非常に興味があります。例は次のようになります。フェイスブックを使用している場合サイトでユーザーがURLに独自の値を挿入したかどうかを確認する方法
www.somesite.com/product.php?id=1356
、ユーザーがそれを変更することができますし、彼らはこのIDに関連付けられているユーザーを取得します。しかし、他のサイト、特にeコマースサイトでは、変更すると失敗するか、ホームページに移動します。
私は自分のサイトでこれを自分自身で確認することができますので、私は非常に興味があります。例は次のようになります。フェイスブックを使用している場合サイトでユーザーがURLに独自の値を挿入したかどうかを確認する方法
www.somesite.com/product.php?id=1356
、ユーザーがそれを変更することができますし、彼らはこのIDに関連付けられているユーザーを取得します。しかし、他のサイト、特にeコマースサイトでは、変更すると失敗するか、ホームページに移動します。
ユーザーが変更したかどうかを確認する方法はありません。これは安全なコーディングの一部です。サーバーの観点からは、すべての入力を検証し、現在のユーザーが要求しているリソースに実際にアクセスする必要があることを検証する必要があります。
追加の詳細と例については、https://www.owasp.org/index.php/Top_10_2010-A4を参照してください。
あなたがアクセスしようとしているユーザープロファイルIDがあなたに公開されている可能性があるため、Facebookはこれを許可しているように見えるかもしれません。ただし、他のすべてのユーザープロファイル(アクセス権のあるユーザープロファイルのみ)にはアクセスできません。私のFacebookのプロフィールIDにアクセスしようとすると、ここであなたのアクセスが拒否されることになります。
これは電子商取引としてタグ付けされているため、もしあなたがまだいない場合は、PCIDSSも知っておくべきです。6.5.4: "安全でない直接オブジェクト参照"がこのシナリオに特に適用されます。 $ _GET方法(または$ _REQUEST)を介して動作します
Facebookを使用している場合、ユーザーはそれを変更して、このIDに関連付けられたユーザーを取得できます。しかし、他のサイト、特にeコマースサイトでは、変更すると失敗するか、ホームページに移動します。
Facebookは同じことをします。
https://www.facebook.com/profile.php?id=102934810293841029348は、そのIDが存在しないため、「Profile Unavailable」というエラーページに移動します。
存在しないIDに変更する可能性があります。
...
あなたには、いくつかのサイトIDを変更することができた理由、それは動作しますが、彼らはそれをプログラムの開発ので、それをすることです。 )...これは単にためsecurity..For例であれば、たとえば、product.phpであなたはそのようなプログラムの開発があるため、変更することはできませんいくつかのidがあることを、この
if(isset($_GET['id']) {
$id = $_GET['id'];
$id = filterid(id)..... and so ...
}
理由のようなものを持っていますページがあり、IDが数字でなければならないことを知っています。データベースの最大IDはたとえば15000です。このようなものを書くことができます。
if(isset($_GET['id'] && strlen($_GET['id']) <= 5 && isNumeric($_GET['id']) {
//if everything is ok you can execute your code here
}
else {
$id = 1; //if someone try to put something else in id, you will simply redirect him on first id(firs product)
}
もう一度、商品IDが存在することを確認したが、それでも機能しなかった。しかし、私はあなたが意味することを理解しています。私はちょうどその方法を理解したいと思います。ユーザー入力とクリックしたものを区別する方法がない場合、少なくとも自分のユーザー入力が間違いなく有効であることを知っているからです。 – Andy
しかし、あなたが依存する変数を使って作業しているのであれば、データベースから取り出すことができます。正しいものとできないものを分け合わせることはできません...ユーザーは何を望みか入力できます...しかし、良い入力はデータベースに入ります...(たとえば、PDOと準備文を使用して).....数値のチェック...チェック値...チェックレター...正規表現...など – cool
これは"get"メソッド。基本的には、情報を「投稿」するときのフォームのようですが、URL自体にデータがあります。 PHPの情報はフォームと同じ方法で取得します。たとえば、そのIDが存在しない場合は、ホームページまたは不明なページにリダイレクトできます。 Facebookには多くのURLがあるので、1つのURLを押す可能性はかなり簡単です。 – Matt
私はそのことを知っていますが、そのサイトがそのIDを持っていた例がありました。私は自分自身をチェックしましたが、私がそれを入れたときには機能しませんでした。だから私はその単純な検証とは思わない。 – Andy
コードを投稿する必要があります。なぜなら、それが動作するからです。それは、あなたがどのようにデータを処理するかはあなた次第です。それは自動的に起こるだけではありません。 – Matt