0

まず、一部の Web サーバーでは、$_GET[a] の代わりに $a を使用してパラメーターに到達できると聞きましたが、ここでは当てはまりません。

とにかく、何度も a に到達する必要があるので、$a = $_GET[a] を実行する代わりに、毎回 $_GET[a] を使用します。のような単一のphpタグで<?php ?>は、それは問題ですか?変数を絶対に使用する必要がありますか? それは問題ですか?

もう 1 つのことは、私の php ファイルが私の html で実際にスクランブルされていることです。複数の get で問題になるのでしょうか?

ありがとう。

4

3 に答える 3

1

$a代わりに$_GET['a'](またはあまりにも)使用することを参照しているの$_POST['a']は、として知られている古い機能ですregister_globals。この機能は危険でコードが乱雑になるため、PHP 5.3 で非推奨と見なされ、最終的に PHP 5.4 で削除されました。

次に、$_GET['a']スクリプトのあらゆる場所で使用すると、問題が発生する可能性があります。これは、ユーザー入力 ( 、、、およびまたはからのすべてのもの)を決して信頼してはならないためです。次のようなことを行うことをお勧めします(関数は存在しません。期待する値のタイプに応じて、必要に応じて、取得するものが整数、または有効な日付などであることを確認する必要があります)。これからは、参照をやめて、作成したばかりの新しいサニタイズされた変数を代わりに使用する必要があります。always を使用していた場合、どこかでサニタイズするのを忘れる可能性があるためです。$_GET$_POST$_REQUEST$_COOKIE$_FILES$_SERVER$a = sanitize($_GET['a']);sanitize$_GET['a']$a$_GET['a']

また、このサニタイズされた変数を SQL クエリに送信する前に、エスケープするか、SQL インジェクションを回避するために準備済みステートメント内で使用する必要があります。ユーザーに表示するために html に出力する前に、XSS 攻撃htmlspecialcharsを回避するために使用します。

そして最後に、複数の php ブロックと html ブロッ​​クを混在させることについては、長期的には完全に混乱するため、これはメンテナンス上の理由からのみ悪いことです。ユーザーに送信する html を php コードから分離してみてください。MVC パターン (Model-View-Controller)について何かを読んでみてください(このリンクはおそらく複雑すぎるか、php を始めたばかりのあなたには今のところユーティリティが表示されていない可能性があります (少なくとも私はその方法を知りませんでした)。必要なすべての複雑さのために、html と php を混合するよりもはるかに優れていました) が、その背後にあるアイデアを把握するようにしてください)。

于 2013-06-18T22:48:47.723 に答える
0

まず、一部の Web サーバーでは、$_GET[a] の代わりに $a を使用してパラメーターに到達できると聞きましたが、ここでは当てはまりません。

これは、 と呼ばれる PHP 構成設定ですregister_globals。これは安全ではないため、使用しないでください。詳細については、この質問を参照してください。

$_GET配列内の要素には何度でもアクセスできますが、問題は発生しません。ただし、$_GET配列の要素 (または他のユーザーが送信したデータ) をページに出力する場合はhtmlspecialchars()、XSS の脆弱性を防ぐために、出力する前に実行する必要があります。

于 2013-06-18T22:34:45.240 に答える