0

登録やログ記録など、ウェブサイトで特定のものをオンまたはオフにする機能を実装することを考えていました。そのような変数を含むファイルを含めることができます

<?php
$upload = 1;
$register = 1;
?>

そして、私のregister.phpファイルを次のようにチェックできるとします。

if($register == 1){
//Show form
} else { echo "Registration is disabled" }

同じ効果をもたらすためにURLにサフィックスを付けることができることをどこかで読んだので、これがセキュリティ上の問題になるかどうか疑問に思っていました

register.php?register=1

しかし、レジスタ グローバルがオフになっている場合、これは機能しません。これはセキュリティ上の大きな問題ですか?

4

4 に答える 4

2

いいえ

register.php?register=1$_GET['register'] register_globals がオンになっている古いバージョンの PHP を使用していない限り、 からのみアクセスできますThanks Lex

サーバーでいくつかの機能を構成している場合は、代わりにセッションを使用することをお勧めします。

$_SESSION['upload'] = 1;
$_SESSION['register'] = 1;

定数とは異なり、いくつかの基準が満たされた場合に変更できます。

最新の PHP 5.4.0register_globals()からは削除されているため、使用しないでください。

于 2012-03-19T12:39:36.677 に答える
2

インクルードされたファイルからこれらを取得する場合は、変数の代わりに定数を使用する方がいくらか良いでしょう。どのような状況でも、実行時に定数を変更することはできません。

define('UPLOAD', 1);
define('REGISTER', 1);

if (defined('REGISTER') && REGISTER === 1) {
  // Registration disabled
} 

register_globalsがオフになっている限り (そうあるべきです!!!!)、これらのスーパーグローバルにアクセスしてコードで明示的に変更しない限り、HTTP リクエストを介してグローバル変数を変更することはできません$_GET,$_POST,$_REQUEST

于 2012-03-19T12:40:21.653 に答える
1

register_globals をオフにしている限り、心配する必要はありません。

于 2012-03-19T12:40:31.513 に答える
1

レジスタ グローバルをオフにすると、まったく問題になりません。この問題は、次のような入力を取得した場合に発生します。

$register = $_GET['register'];

悪意のあるコードではなく、実際に番号を取得したことを確認しないでください。

于 2012-03-19T12:41:01.903 に答える