5

Web サーバー上の php ファイルをチェックして、ユーザーが検証されているかどうかを確認するプログラムがあります。php ファイルは DB を介して実行され、チェックされている場合は「検証済み」と表示されます。

現在、人々は Xampp をインストールし、hosts ファイルでサーバーを 127.0.0.1 にルーティングし、検証済みをエコーするスクリプトを設定することで、検証システムを簡単にバイパスしています。

ドメインの IP アドレスをチェックして、それが 127.0.0.1 にルーティングされているかどうかを確認できるようにしたいと考えています。

Delphi を使用してドメインの IP アドレスを解決するにはどうすればよいですか?

4

1 に答える 1

14

私は以前、同様のハックを使用して、ICQ サーバー側の検証を回避していました。招待されていないアルファ/ベータ ビルドをテストしたい場合に非常に便利です :-)

Delphi に同梱されている Indy には、ドメインの IP を取得するために使用できるTIdStack.ResolveHost()関数と別のコンポーネントがあります。TIdDNSResolverまたTIdStack.LocalAddresses、ローカル IPv4 アドレスを取得するプロパティもあります。または、Windows の関数のように、ソケット APIgethostbyname()またはgetaddrinfo()関数をプラットフォーム固有の API と共に直接使用して、ローカル IP を列挙することもできGetAdaptersAddresses()ます。

ただし、PHP スクリプトで単純にプレーン テキストをアプリにエコー バックさせるのではなく、IP を確認する必要のないはるかに安全なオプションは、アプリで動的に生成されたナンス値を作成し、それを PHP スクリプトに送信することです。次に、スクリプトにそれを処理させ、必要に応じて、あなただけが知っているアルゴリズムを使用してハッシュし、アプリに送り返します。アプリは同じアルゴリズムを実行し、結果を比較できます。誰かが時間を割いてアプリをリバース エンジニアリングしない限り、カスタム Xampp スクリプトでアルゴリズムを再現したり、その結果を偽造したりすることはできません。

SSL/TLS を使用してドメイン サーバーへの接続を暗号化し、アプリケーションが PHP スクリプトとデータを交換する前に検証できる SSL 証明書をドメイン サーバーに提供します。これだけ行うと、SSL/TLS によってドメインに接続されていることが確認されるため、引き続きプレーンテキストのエコーを使用できます。

于 2012-11-14T01:39:52.560 に答える