ホームページ  >  記事  >  バックエンド開発  >  $_POST は安全ですが、クロスドメイン送信を回避するにはどうすればよいですか?

$_POST は安全ですが、クロスドメイン送信を回避するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-06-23 14:23:521505ブラウズ

送信され、データベースにリンクされている AJAX ページがいくつかあります。最近、誰かが fsockopen またはcurl を使用して POST フォームをシミュレートし、データベース情報を盗んだのではないかと思いました。

$_POST のクロスドメイン送信を回避するには?

Apacheで設定できますか?それとも $_SERVER などを使用しますか?


ディスカッションへの返信 (解決策)

送信者の身元を特定するためにセッションを使用しても問題ありませんか?

1. たとえば、ログに記録されたデータのみにアクセス許可を設定できる場合は、メンバーがそれを閲覧できるようにすると、他のユーザーがクロールできなくなり、問題が発生します。しかし、この障害はいつでも克服できます。
2. アクセスログを分析し、不審なIPアクセスをサーバーレベルで制限します。
3. 各 IP の動作密度を記録します。頻度が高い場合は、時々検証コードを要求することもできます

または、パラメータが満たされているかどうかを判断するために変更ルールを設定してからデータを提供することもできます

トークンまたは検証コードが問題を解決します...
または、上記のようにグローバル変数を生成して検証します

モデレーターが言ったように、トークン検証を生成してから、頻繁に送信される IP の検証コードを設定します。

セッションでトークンを生成し、送信後にセッションを検証し、毎回新しいトークンが存在することを確認するために合法であればすぐにセッションをログアウトします

トークンまたは検証コードが問題を解決します。
または、上記のように、グローバル変数を生成して検証します。グローバル変数の検証をより具体的にすることはできますか?

不親切な検証コード以外に方法はありません
ただし、より単純な検証コードもマシンによって認識されます

あなたは AJAX です。ページにあるので確認してください コードも使えません
データリクエスト部分の js コードも動的に生成されていると考えることができます
このように、泥棒が js を動的に解析できなければデータを取得できません

最近、送信されてデータベースにリンクされている AJAX ページがいくつかあります。最近、誰かが fsockopen を使用しているのではないかと疑っています。または、curl が POST フォームをシミュレートし、データベース情報を盗んでいます。

$_POST のクロスドメイン送信を回避するには?

Apacheで設定できますか?それとも $_SERVER などを使用しますか?

検証を使用し、ハッシュを追加します。これらのハッシュ値は時間に縛られており、
(1) 設定した時間内は無効
(2) 日時によって暗号化方式が変わる


不親切な認証コード以外に方法はない
しかしより簡単な検証 コードは機械でも認識できます

あなたは AJAX ページなので、検証コードは使用できません
リクエストデータ部分の js コードも動的に生成されていると考えることができます
このように、泥棒は動的に js を解析できず、データ


+1 を取得できません。js を解析できるのは検索エンジン ロボットだけです。

長期的なデータ収集者として、上記のすべての方法で処理できることをお伝えしたいのは残念です

しかし、あなたより早く PHP を学び、市場運営についてのある程度の知識も持っている者として、私があなたに提案するのは次のとおりです

(オープンデータの内容に基づく):
1. 最も重要な点: 誰を警戒すべきかを理解する必要があります。重要なのは、あなたの会社の競合他社を警戒することです (最後を参照)。 2. ポイント 1 に基づいて、完全なデータベース防御を行う必要はありません。これは、鍵データに対してトリックを行うだけです。ショッピング モールにとって、価格は重要なデータです。なぜタオバオは予防措置を講じないのでしょうか?物を販売しているのは淘宝網そのものではないからです...完了
3. あらゆる防止作業は必然的にユーザー エクスペリエンスの低下につながります。顧客を失うことと、少数の泥棒を防ぐメリットとの比較を測定する必要があります
4。 . 予防が本当に必要な場合
1) 機械から保護することと、人から保護しないことの違いは何ですか?前者はコードを読み取り、後者はテキストを(肉眼で)読み取るため、これが最も重要なポイントです。 2) 上記のポイント 2 に基づいて、マーケティング部門と協力して、適切な重要なポイントを見つけるのが最善です。データ
3) データを取得するには、クローラの開発、クローリング プロセス、データの再編成の 3 つのステップがあります。上記のポイント 3 で述べたように、開発の難易度を高める必要も方法もありません。慎重に扱ってください、「時間」に焦点を当てるのが最善です データを再構成することの難しさ、つまり、たとえ捕らえられたとしてもプログラムを使用することが難しいことに焦点を当てます。 4) 大企業は、訴訟などの会社レベルでの泥棒に対処する必要があります。これにより、会社の知名度が上がります。 中小企業は、一般に、比較的固定されたサービス目標を持っています。たとえば、一部のデータは特定の担当者のみに公開されます
...
一般に、それはビジネスモデルと組み合わせる必要があり、技術部門がすべての責任を負うべきではありません

補足 3) 前述の計画例:
A: ナオ・ナオが言ったように、直接書き出すことができない場合でも、それは完全な結果になります。 JS エンジンを呼び出して結果を計算する方法はまだできません。 4 つの画像だけで必要な数が表示されます (Web ページの背景色と組み合わせる)。この方法は長い間有効でしたが、OCR プログラムがますます単純になるにつれて、この方法も無効になりました。役に立つ

中国、日本、韓国の郵便番号、お気に入りの写真など、目的なくデータをキャプチャします (ターゲットを指します)。販売はしません。他の人がそれを捕まえるのを手助けしない場合、商用データは何の興味も持たず、もしあなたがそれを捕まえた場合、多くの問題を引き起こす可能性があり、深刻な結果が生じる可能性があります。私の人生の最後の数年間について考えなければなりません

最後に言っておきますが、今はそれに対処することはできません。ハッシュとかグローバル変数とかだけど、LSのお兄さんの言葉を聞いてすごく心が落ち込んだ。

簡単な質問ですが、「絵の滝の壁」とは何ですか?

トークンまたは検証コードが問題を解決します...

または、上記のようにグローバル変数を生成して検証します
グローバル変数を設定する方法はありますか?また、firebug などでも見ることができますか?投稿、取得、Cookie を見ることができます...

http://qing.weibo.com/tag/%E6%97%85%E8%A1%8C

これは写真の滝の壁です

ただadd

Cookie、セッション、トークンのどれを使っても予防効果は得られません

チェックされるのは、クライアントから返されたデータがサーバーによって設定されたデフォルトと一致しているかどうかであるためです

まあ、コレクションを分割するだけで済みますアクションは 2 つのステップに分かれます:

1. Ajax ページに入ると、Web サイトから検証用の関連データが送信されます。なぜなら、ajax の送信も検証する必要があるからです

2. 対象のページにリクエストを送信します。このとき、ajax リクエストと同じ検証データが含まれています



11 階のエキスパートを読んだ後、次のように感じます。完全な新人は何も知りません

追記
Cookie、セッション、トークンのどれを使用しても、予防効果は得られません
チェックされるのは、クライアントから返されたデータがサーバー上のデフォルトのデータと一致するかどうかであるためです

まあ、私はただアクションを収集する必要があります。これは 2 つのステップに分かれています:
1. Ajax ページに入ると、Web サイトから検証用の関連データが送信されます。なぜなら、あなたの ajax 送信も検証される必要があるからです
2. ターゲットページにリクエストを送信します

この時点で、それはあなたの ajax リクエストと同じ検証データを運びます

私はこれをすべて知っています。私はいつもこのようなことをしてきました、そしてすべての報いが来ました...

本題に戻りますが、Cookie、セッション、トークンがすべて非常に弱いことはわかっています。私だったら、私もそうするでしょう。まず、ホームページ チェーン上の AJAX ハイパーリンクを収集し、次に POST をシミュレートして AJAX ページのコンテンツを収集します。

それでは、サーバーの IP アドレスまたは URL へのアクセスのみを許可するように特定のページを制限する APACHE または PHP のグローバル変数設定はありますか?


この投稿は、2013-01-10 21:53:39 に PhpNewnew によって最終的に編集されました
15 階の xuzuning からの返信を引用して、追加します
クッキー、セッション、トークンのいずれを使用しても、それは達成できません予防効果
検査のせいで、クライアントから返されたデータがサーバー上の事前設定されたデータと一致しているかどうかです

まあ、収集アクションを 2 つのステップに分ける必要があるだけです:
1. ajax ページに入り、あなたのウェブサイトは、関連するデータを送信して確認します。 ajax の送信も検証する必要があるため
2. この時点で、ajax リクエストを使用してリクエストを送信します。そういったことはしないでください 小学生 3 あらゆる年齢層の誰もが見ることができる確認コード。
淘宝網と Yahoo の確認コードがどのようなものかを見てください。そうでない場合は、中国語の文字を追加してください。失敗した検証の数とブラックリストについて話しましょう
データが貴重でない限り、この画像を認識するためのデータベースの構築にそれほど多くのエネルギーを費やす人はいないと思います

最後に、すべての情報から画像出力を生成します。 ...わかりました、拾ってください...

http://qing.weibo.com/tag/%E6%97%85%E8%A1%8C

この写真の滝の壁は誰ですか? 「ウォーターフォール」という名前を思いつき、この方法は何年も前に使用されていましたが、当時は名前が付いていました

付け加えさせてください
Cookie、セッション、トークンを使用しても、それは達成できません。
チェックされるのは、クライアントから返されたデータがサーバーによって事前に設定されたデータと一致するかどうかであるため

さて、収集アクションを 2 つのステップに分割するだけで済みます:
1. Ajax ページに入り、ウェブサイトから検証のために関連データが送信されます。 ajax 送信も検証する必要があるため
2. ターゲット ページにリクエストを送信します。この時点で、ajax リクエストと同じ検証データが送信されます

検証データが送信され、マシン データの収集の防止のみが考慮されます。
jsパラメータをリクエストする場合はaを追加すればOKです。

はい、キーを取得します

時間変数 + 一連のキーを比較します

Niubi.com では、すべての投稿が検証のために動的に処理されます

http://qing. weibo.com/tag/%E6%97%85%E8%A1%8C

これは写真の滝の壁です
この写真の滝の壁はなぜ割れないのでしょうか?見つかりませんでした

検証データが含まれており、マシンデータの収集を防ぐことのみを考慮しています
リクエスト時に js パラメータを追加しても問題ありません。

書き方に関する簡単な例やチュートリアルなどはありますか?次に、それを自分でより複雑なものに変更します。

function isAjax() {		return $_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest';	}

処理する前に、それが ajax リクエストであるかどうかを確認します。そうでない場合は、 exit();

PHP code?123function isAjax() { return $_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' }
前に判断します。処理 Ajax リクエストであるかどうかを確認し、そうでない場合は exit();

Ajax はドメインを越えることができないため、追加します。

26 階の bbjbepzz からの返信を引用: PHP code?123function isAjax() { return $_SERVER ['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' }
処理する前に、それが ajax リクエストであるかどうかを確認し、それ以外の場合は exit( );

ajax はドメインを越えることができないため、追加します。


http リクエスト ヘッダーは手動で構築できます。あなたの方法は実行可能ではありません。テストしただけです

http リクエスト ヘッダーは手動で構築できます。あなたの方法は実行不可能です。私はそれをテストしました。これは盗まれていません。テストしてくれた友人に感謝します。

セッションを動的に生成し、投稿時に再度確認します。

但是做手机接口的时候就会出有问题了

引用 14 楼 snmr_com 的回复:http://qing.weibo.com/tag/%E6%97%85%E8%A1%8C

这个就是图片瀑布墙
这个图片瀑布墙 怎么个没法破解? 没发现啊

不是没法,是没简单点的方法,现在是手动抓http请求再发过去,但想找些更加自动的方法(适用于不同站点而不仅是weibo)

好复杂的样子,才初学的路过

不是没法,是没简单点的方法,现在是手动抓http请求再发过去,但想找些更加自动的方法(适用于不同站点而不仅是weibo)
……
只要做到不被自动程序抓取就好,只有手动才可以抓取,效果已经达到了。
世上没有解不了的密。

最简单而有有效的方法 判断IP在规定时间的访问次数,如果判断是采集过来的IP,直接给他一些垃圾数据。哈哈 他就悲剧了

作为一个长期数据搜集者,很遗憾地告诉你,上面说的方法都能应付

但作为php学得比你早,还知道点市场运作知识的人,我给你的建议有下面这些(基于开放数据内容):
1.最重要的一点:你要搞清防范的对象,像我这样的人(看最后),你防也没用,也没必要,关键是防你公司的竞争对手
2.基于第1点,也没必要做全数据库防范,那是防黑客层面的工作,只需要在关键数据上面做手脚就行了
……

我最近打算找时间看瀑布墙呢,有想法随时找你交流哈!

最简单而有有效的方法 判断IP在规定时间的访问次数,如果判断是采集过来的IP,直接给他一些垃圾数据。哈哈 他就悲剧了

那要多建立一个IP记录数据库,增加MYSQL负担,总不见得手动查找LOG吧。

如果有人手工跨域提交防不住
因为http无状态,不知道你之前的域,一切可以带过去的信息都是可以手工模拟的,比如HTTP_REFERER。
倒是机器跨域提交,可以带一个token,token这东西本身不是防止跨域提交,而是防止重复提交的,也就是说同一个post不能提交多次,第二次提交的时候必须变换服务器给出的新token(也就是说必须请求一次某个页面拿到新token)。做个图片验证码之类的可以防住一些机器提交,但是手工提交依旧防不住。
如果有人恶意提交数据,搞攻击,还是从服务器上作策略,断了这个ip的tpc链接吧。

汗,不知道PHP6能不能修补掉这个BUG。

汗,不知道PHP6能不能修补掉这个BUG。

这个应该不是bug,而是http的特点。

这个应该不是bug,而是http的特点。

所有技术标准,都是人制定的,一切基础都是0和1,世上没有解决不了的难题。

这个问题只能寄希望于下一版PHP了。

if(preg_match('#domain\.com#i',$_SERVER['HTTP_REFERER'])){}


这个行吗?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。