ホームページ バックエンド開発 PHPチュートリアル PHP での安全なプログラミングに関するアドバイス

PHP での安全なプログラミングに関するアドバイス

Aug 20, 2019 am 10:27 AM
プログラミングのセキュリティ

はじめに

インターネット サービスを提供するには、コードを開発するときに常にセキュリティを意識する必要があります。ほとんどの PHP スクリプトがセキュリティ問題を気にしていない可能性があります。これは主に、この言語を使用する経験の浅いプログラマーが非常に多いためです。ただし、コードの不確実性を理由に、一貫性のないセキュリティ ポリシーを使用する必要がある理由はありません。金銭に関係するものをサーバーに置くと、誰かがそれをハッキングしようとする可能性があります。フォーラム プログラムやあらゆる形式のショッピング カートを作成すると、攻撃される可能性が無限に高まります。

推奨される PHP ビデオ チュートリアル: https://www.php.cn/course/list/29/type/2.html

背景

Web コンテンツのセキュリティを確保するために、一般的なセキュリティ ガイドラインをいくつか示します:

#1. フォームを信頼しないでください

攻撃 フォームはシンプルです。簡単な JavaScript トリックを使用すると、評価フィールドに 1 から 5 までの数字のみを許可するようにフォームを制限できます。誰かがブラウザの JavaScript 機能をオフにしたり、カスタム フォーム データを送信したりすると、クライアント側の検証は失敗します。

ユーザーは主にフォーム パラメータを通じてスクリプトを操作するため、これが最大のセキュリティ リスクとなります。何を学ぶべきですか? PHP スクリプトでは、PHP スクリプトに渡されるデータを常に検証してください。この記事では、ユーザーの資格情報をハイジャックする (またはさらに悪いことに) 可能性があるクロスサイト スクリプティング (XSS) 攻撃を分析し、防御する方法を説明します。データを汚したり破壊したりする可能性のある MySQL インジェクション攻撃を防ぐ方法についても説明します。

2. ユーザーを信じないでください

Web サイトで取得したすべてのデータには有害なコードが含まれていると想定してください。たとえ誰もあなたのサイトをハッキングしようとしないと信じている場合でも、すべての部分をクリーンアップしてください。

3. グローバル変数をオフにする

最大のセキュリティ ホールは、

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 パラメータを送信してオーバーライドできます。<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;?php // Define $authorized = true only if user is authenticated if (authenticated_user()) { $authorized = true; } ?&gt;</pre><div class="contentsignin">ログイン後にコピー</div></div><p>这个故事的寓意是,你应该从预定义的服务器变量中获取表单数据。所有通过 post 表单传递到你 web 页面的数据都会自动保存到一个称为<code> $_POST 的大数组中,所有的 GET 数据都保存在 $_GET 大数组中。文件上传信息保存在一个称为 $_FILES 的特殊数据中。另外,还有一个称为 $_REQUEST 的复合变量。

要从一个 POST 方法表单中访问username字段,可以使用 $_POST[&#39;username&#39;]。如果 username 在 URL 中就使用$_GET[&#39;username&#39;]。如果你不确定值来自哪里,用 $_REQUEST[&#39;username&#39;]

<?php
$post_value = $_POST[&#39;post_value&#39;];
$get_value = $_GET[&#39;get_value&#39;];
$some_variable = $_REQUEST[&#39;some_value&#39;]; 
?>
ログイン後にコピー

$_REQUEST $_GET$_POST、和 $_COOKIE 数组的结合。如果你有两个或多个值有相同的参数名称,注意 PHP 会使用哪个。默认的顺序是 cookiePOST、然后是 GET

以上就是为大家整理的一些编程安全建议。更过相关问题请访问PHP中文网:https://www.php.cn/

以上がPHP での安全なプログラミングに関するアドバイスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

インテルTXTとは何ですか? インテルTXTとは何ですか? Jun 11, 2023 pm 06:57 PM

IntelTXT は、Intel が開発したハードウェア支援セキュリティ テクノロジであり、CPU と BIOS の間に保護されたスペースを確立することで、起動中のサーバーの整合性とセキュリティを確保できます。 TXT の正式名は TrustedExecutionTechnology、つまり Trusted Execution Technology です。簡単に言うと、TXT は、サーバーの起動時に悪意のあるプログラムや不正なソフトウェアによってサーバーが変更されていないことを保証するハードウェア レベルの保護を提供するセキュリティ テクノロジです。これです

PHP を使用して HTTP 応答分割攻撃を防ぐ方法 PHP を使用して HTTP 応答分割攻撃を防ぐ方法 Jun 24, 2023 am 10:40 AM

HTTP レスポンス分割攻撃 (HTTP レスポンス分割攻撃) は、Web アプリケーションを使用して HTTP レスポンスを処理する脆弱性で、攻撃者は悪意のある HTTP レスポンスを構築し、正規のレスポンスに悪意のあるコードを挿入することで、ユーザーを攻撃する目的を達成します。一般的に使用される Web 開発言語である PHP は、HTTP 応答分割攻撃の脅威にも直面しています。この記事では、PHP を使用して HTTP 応答分割攻撃を防ぐ方法を紹介します。 HTTP 応答分割攻撃について

BYD、安全で楽しい車内エンターテイメント空間の創造に向けてスティングレイと協力 BYD、安全で楽しい車内エンターテイメント空間の創造に向けてスティングレイと協力 Aug 11, 2023 pm 02:09 PM

BYDの公式WeChat公開アカウントは、BYDが音楽メディアテクノロジー企業スティングレイと協力合意に達し、2023年から新エネルギー車にスティングレイのインタラクティブカーKTV製品を導入し、世界中の複数の市場で販売促進する計画であると発表した。 、BYDとスティングレイ スティングレイが共同開発したエンターテインメントシステムは、BYDの新エネルギー車にさらなるエンターテインメント機能を追加し、ユーザーの多様なニーズに対応する。このエンターテインメント システムは複数の言語をサポートし、ユーザー フレンドリーなインターフェイス デザインを提供し、ユーザーが曲名、アーティスト、歌詞、ジャンルで簡単に検索できるようにします。さらに、システムは毎月自動的にトラックを更新し、ユーザーに新しい音楽体験を提供します。

Nginx リバースプロキシでの安全な DNS 解決 Nginx リバースプロキシでの安全な DNS 解決 Jun 11, 2023 am 09:51 AM

Web アプリケーションが進化し続けるにつれて、データとプライバシーを保護するためのセキュリティ対策がますます必要になります。その中でも、安全な DNS 解決は、悪意のある DNS サーバーによる攻撃から私たちを守ることができる非常に重要な対策です。 Nginx リバース プロキシで安全な DNS 解決を使用することも重要です。この記事では、Nginx リバース プロキシにおける安全な DNS 解決について説明し、その設定方法について説明します。 DNS解決とは何ですか? DNS (DomainNameSystem) 解決はドメイン名を IP に変換します

ネットワークキーロガーから保護するにはどうすればよいですか? ネットワークキーロガーから保護するにはどうすればよいですか? Jun 11, 2023 pm 03:03 PM

インターネット時代において、情報漏洩は私たちの生活の中で非常に一般的な現象になりました。中でもネットワークキーロガーは非常に効率的なハッカー攻撃ツールであり、ユーザーの入力内容を記録し、ユーザーアカウントのパスワードなどの機密情報を盗み出すことで、個人のプライバシーや財産を脅かします。したがって、ネットワーク キーロガーを効果的に防止する方法は、インターネット ユーザーが直面する重要な課題となっています。この記事では、オンライン キーロガーの被害に遭わないようにするためのいくつかの方法を紹介します。オペレーティング システムやソフトウェア ネットワーク キーロガーなどを定期的に更新します

Nginx セキュリティ アップデートに関するいくつかの提案 Nginx セキュリティ アップデートに関するいくつかの提案 Jun 10, 2023 am 11:03 AM

Nginx は、スケーラブルなモジュール構造と効率的なパフォーマンスの利点を備えた、広く使用されている Web サーバーおよびリバース プロキシ サーバーです。ただし、他のソフトウェアと同様に、Nginx にもセキュリティ上の脆弱性がある可能性があります。 Web サイトのセキュリティを保護するために、Nginx のセキュリティ アップデートは非常に重要です。この記事では、Nginx のセキュリティ アップデートの推奨事項をいくつか紹介します。 Nginx を定期的に更新する 他のソフトウェアと同様、更新は非常に重要です。特に Web サーバーや Nginx などのリバース プロキシ サーバーの場合、

AMDセキュアプロセッサとは何ですか? AMDセキュアプロセッサとは何ですか? Jun 11, 2023 pm 12:15 PM

AMDSecureProcessor は、コンピュータ システムのセキュリティを強化するために使用されるコプロセッサを指します。このテクノロジーは、世界的に有名な半導体メーカーである AMD によって開発され、より強力なシステム セキュリティ保護対策を提供します。 AMDSecureProcessor は、メイン プロセッサにセキュリティ プロセッサを統合することによって実装されます。セキュリティ プロセッサは、セキュリティ関連のコンピューティング タスクを実行するように設計されており、メイン プロセッサから分離された独自の独立したメモリとストレージを備えています。このコプロセッサの導入

WeChat決済の安全性に関する研究 WeChat決済の安全性に関する研究 Jun 11, 2023 am 08:57 AM

電子決済の普及に伴い、Alipay や WeChat Pay などのモバイル決済プラットフォームへの依存度が高まっています。これらのプラットフォームは消費者や販売者に便利で迅速な支払い方法を提供しますが、同時にプラットフォームのセキュリティはユーザーの資産と個人情報のセキュリティに関係します。この記事では、WeChat Pay のセキュリティを調査し、ユーザーの個人情報とアカウントのセキュリティを保護するパフォーマンスを評価します。まず、WeChat 支払いのセキュリティ メカニズムを理解する必要があります。 WeChat Pay は PCI-DSS (PaymentCard) に準拠しています。

See all articles