2009-04-05 7 views
0

私は現在、Paypalのチェックアウトでアフィリエイトプログラム(CJのようなもの)を構築しています。人々がアフィリエイトとして(自分のウェブサイトから自分のプロダクトを売るために)サインアップするとき、彼らは自分のショップに挿入する必要のある2つのPHPラインを受け取る。ペイパルボタンでSQL結果内の変数を解析する

<?php include 'http://www.mydomain.com/tracker/tracker.php?xyz='.$_GET[xyz]; ?> 

:ヘッダで

<input type="text" name="notify_url" 
    value ="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>" + 
    style="width:1px; height:1px; border:0"> 

誰かが購入することを決定したときに第2のPayPalに戻り先URLを転送しつつ、第1の部分は、基本的にクッキーを設定しますこれは私たちに返されます。アフィリエイトが実際にコードを追加したかどうかを確認できるようにするため、2番目の部分を非表示にしていません。

これはすべて単純な手書きPHPでうまく動作しますが、これらのアフィリエイトがデータベースを使用しているとすべてがうまくいかなくなります。彼らのスクリプトはおそらく$ row ['paypal']のようなものをエコーし​​て、文字通り挿入された行を表示し、$ _GETを解析しません。

これがどのように解決されるかについては全くの手がかりがありません。可能であれば、私は主に非技術的な人々であるため、自分の側に多くのカスタマイズをしている私の系列会社を悩ませたくないので、私が私の側で修正できるものを望んでいます。

+0

出力の詳細は何ですか? – Aziz

答えて

0

そのことについて申し訳ありませんが、第二部はされている必要があります。

<input type="text" name="notify_url" value ="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>" style="width:1px; height:1px; border:0"> 
+0

あなたの質問を編集することができます。コードには4つのスペースがあります。 –

1

彼らは自分の店に挿入する必要がある2本のPHPのラインを受け取ります。

これは非常に厄介です。 include()は、指定されたURL からコード内をドラッグし、を実行します。

アフィリエイトネットワークに自分のアプリケーションにPHPコードを追加することは許可されません。これにより、外部サイトが自分のアプリケーションとデータベースを完全に制御できるようになります。これは、暗号化されていないHTTP上で実行すると特に受け入れられません。中間者による攻撃は、すぐにサーバーを侵害する可能性があります。また、tracker.phpにクロスサイトスクリプティングの穴がある場合、エンドユーザはカスタマーサイトを完全に侵害する可能性があります。

あなたのネットワークとサードパーティーのアプリケーションとのインターフェースがより安全でないことを強くお勧めします。

PHPコードではなく、最終ページに表示するHTMLを返すつもりであれば、readfile()を使用するか、またはアフィリエイトにクライアント側の<スクリプトを挿入するより一般的な方法を使用できます>タグがあなたのサイトを指しています。

<?php include 'http://www.mydomain.com/tracker/tracker.php?xyz='.$_GET[xyz]; ?> 

パラメータに任意のURL、特殊文字が正しくエスケープされるように、また、urlencode()を使用する必要があります。

value="http://www.mydomain.com/ipn.php?xyz=<?php echo $_GET[xyz]; ?>" 

そしてここで、プラスあなたは、あなたが出力いつでもHTMLに任意のテキストコンテンツと同様に、HTML特殊文字をエンコードするために)(はhtmlspecialcharsを使用する必要があります。それ以外の場合は、クロスサイトスクリプティング攻撃に対して脆弱です。

現時点で、あなたのアフィリエイトの一部が間違っていることを正確に診断するのに十分な情報はありません。より具体的な例が使用される。しかし、あなたがこれまでに投稿したことから、私はあなたのシステムのセキュリティについて、最も基本的なレベルで心配しています。

0

あなたの手の込んだ答えのためにありがとうございます。

私は、自分のページにPHPファイルを含めるのが好きではないという点を理解しています。したがって、パート1を削除し、リダイレクトURLとCookieで変更しました。実際のスクリプトでは、明らかに私はSQLインジェクションからも保護します。

しかし、私の主な問題はまだ残っています。 Paypalでの販売を追跡するには、WebサイトのPaypalボタンに入力フィールドを1つ追加する必要があります。これは次のようになります。

<input type="text" name="notify_url" value 
="http://www.artinthepicture.com/sellmyart/ipn.php?xyz=<?php echo $_GET['xyz'] ?>" style="width:1px; height:1px; border:0"> 

奇妙なことは何も起こりません。主な問題は、ユーザーからのコードに多くの問題が発生する可能性があることです。たとえば、mysqlデータベースを使用してショップを構築する場合、おそらくpaypalボタンのための別のフィールドがあります。ここでこのペイパルボタンをエコーすると、余分な入力フィールドは上記のようになります。そしてそれは$ _GET [xyz]が解析しないので問題になります。

[編集:低いランクのためコメントできません]

+0

htmlspecialcharsがないとセキュリティ上の問題があります。サードパーティがパラメータ「?xyz = ">」を持つURLに第三者を誘導したとします。 – bobince

+0

PHPが埋め込まれたデータベースに文字列を挿入しようとすると、彼らはそれを非常に間違っていると言っても間違いないと思うのですが、基本的に修正することはできません。とにかく静的なアフィリエイトコードであるべきではないでしょうか? – bobince

関連する問題