はじめに
インターネット サービスを提供するには、コードを開発するときに常にセキュリティを意識する必要があります。ほとんどの PHP スクリプトがセキュリティ問題を気にしていない可能性があります。これは主に、この言語を使用する経験の浅いプログラマーが非常に多いためです。ただし、コードの不確実性を理由に、一貫性のないセキュリティ ポリシーを使用する必要がある理由はありません。金銭に関係するものをサーバーに置くと、誰かがそれをハッキングしようとする可能性があります。フォーラム プログラムやあらゆる形式のショッピング カートを作成すると、攻撃される可能性が無限に高まります。
推奨される PHP ビデオ チュートリアル: https://www.php.cn/course/list/29/type/2.html
背景
Web コンテンツのセキュリティを確保するために、一般的なセキュリティ ガイドラインをいくつか示します:
#1. フォームを信頼しないでください
register_globals 設定パラメータを有効にしてしまうことです。幸いなことに、PHP 4.2 以降では、この設定はデフォルトで無効になっています。
register_globals がオンになっている場合は、php.ini ファイルの
register_globals 変数を Off に変更することでこの機能をオフにできます。
register_globals = Off初心者プログラマは、登録するのが面倒だと感じています。 globals 変数は便利ですが、この設定がどれほど危険であるかを理解していません。グローバル変数が有効になっているサーバーは、任意の形式のパラメータをグローバル変数に自動的に割り当てます。それがどのように機能するのか、そしてなぜ危険なのかを理解するために、例を見てみましょう。 フォーム データをデータベースに挿入する
process.php というスクリプトがあるとします。最初の形式は次のようになります。
<input name="username" type="text" size="15" maxlength="64">
process.php を実行すると、登録されたグローバル変数が有効になっている PHP はパラメータを
$username 変数に割り当てます。これにより、
$_POST['username'] または
$_GET['username'] を介してアクセスする場合に比べて、キーストロークが節約されます。残念ながら、これにはセキュリティ上の問題も残ります。変数を明示的に初期化せず、誰も初期化したくない場合、PHP は GET または POST パラメータを介してスクリプトに送信される値に変数の値を設定するからです。それを運用するには大きな問題が発生します。
$authorized 変数の値が true の場合、検証されたデータがユーザーに表示されます。通常、
$authorized 変数の値は、ユーザーがこの仮想の
authenticated_user() 関数検証に正しく合格した場合にのみ true に設定されます。ただし、
register_globals を有効にすると、誰でも
authorized=1 などの GET パラメータを送信してオーバーライドできます。<pre class="brush:php;toolbar:false"><?php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
$authorized = true;
}
?></pre><p>这个故事的寓意是,你应该从预定义的服务器变量中获取表单数据。所有通过 post 表单传递到你 web 页面的数据都会自动保存到一个称为<code> $_POST
的大数组中,所有的 GET 数据都保存在 $_GET
大数组中。文件上传信息保存在一个称为 $_FILES
的特殊数据中。另外,还有一个称为 $_REQUEST
的复合变量。
要从一个 POST 方法表单中访问username字段,可以使用 $_POST['username']
。如果 username 在 URL 中就使用$_GET['username']
。如果你不确定值来自哪里,用 $_REQUEST['username']
。
<?php $post_value = $_POST['post_value']; $get_value = $_GET['get_value']; $some_variable = $_REQUEST['some_value']; ?>
$_REQUEST
是 $_GET
、$_POST
、和 $_COOKIE
数组的结合。如果你有两个或多个值有相同的参数名称,注意 PHP 会使用哪个。默认的顺序是 cookie
、POST
、然后是 GET
。
以上就是为大家整理的一些编程安全建议。更过相关问题请访问PHP中文网:https://www.php.cn/
以上がPHP での安全なプログラミングに関するアドバイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。