diff --git a/chapters/intro.xml b/chapters/intro.xml index 0d64d89122..53423578b3 100644 --- a/chapters/intro.xml +++ b/chapters/intro.xml @@ -1,11 +1,14 @@ - + - 入門 + + 入門 + PHP は何ができるものですか? + -
+
PHP とはなんでしょう? PHP (PHP: Hypertext Preprocessor @@ -40,13 +43,13 @@ HTMLを出力するために多くのコマンドを記述する (C や Perl のように) - 代わりに、PHP のページは "何か" + 代わりに、PHP のページは 何か (この例では、Hi, I'm a PHP script! と出力) を行うコードを HTML に埋め込むことになります。 PHP のコードは特別な 開始および終了の処理命令 <?php?> - で囲まれており、これによって "PHP モード" の切り替えを行います。 + で囲まれており、これによって PHP モード の切り替えを行います。 PHP がクライアントサイド JavaScript のようなものと異なっている点は、 @@ -54,14 +57,14 @@ クライアントは、スクリプトを実行した結果を受け取りますが、 その出力を作成したコードがどんなものなのかを知ることはできません。 全てのHTMLファイルをPHPで処理するようにWebサーバー - を設定することさえ可能で、この場合、ユーザーが袖の内に何があるかを - 見分けることは不可能になることでしょう。 + を設定することさえ可能で、この場合、ユーザーはPHPが動いていることすら + 知ることができません。 PHPを使用する上で最も優れている点は、初心者に対しては非常に分かり - 易いと同時に、プロフェッショナルのプログラマに対しては多くの進んだ + やすいと同時に、プロフェッショナルのプログラマに対しては多くの進んだ 機能を提供している点です。PHPの機能を羅列した長い一覧表を読まなけ - ればならないのかと心配する必要はありません。PHPはすぐに始められま + ればならないのかと心配する必要はありません。PHPは誰でもすぐに始められま すし、時間を掛けずに簡単なスクリプトが書けるようになります。 @@ -73,7 +76,7 @@
-
+
PHPにできることは? あらゆることができます。PHPでは主にサーバーサイドでの活用に焦点が @@ -87,14 +90,12 @@ - サーバーサイドでのスクリプティング。これは最も古くからあり + サーバーサイドでのスクリプティング。これは幅広く使われていて PHPの中心となる分野です。ここでPHPを動作させるには 3つのものが必要です。PHPパーサ(CGIもしくはサーバーモジュール)、 - ウェブサーバー、そしてブラウザです。ウェブサーバーは - インストールされたPHPと連結して起動されなければなりません。 - ブラウザでウェブサーバーにアクセスし、PHPページを閲覧することで - PHPプログラムの出力を得ることが出来ます。インストール手順の章に詳しい + ウェブサーバー、そしてブラウザです。これらはいずれもローカルマシンで + 実行して PHP プログラミングを試すことができます。 + インストール手順の章に詳しい 情報があります。 @@ -103,8 +104,8 @@ コマンドラインでのスクリプティング。PHPスクリプトは サーバーもブラウザも無しで動作させるようにすることも出来ます。 この場合、PHPパーサだけが必要となります。このタイプは - cron(Windowsではタスクスケジューラ)を使用して一定間隔で - スクリプトを実行したい場合や、ちょっとした文書処理を + cron(Unix および macOS) やタスクスケジューラ(Windows)を使用して + 一定間隔で スクリプトを実行したい場合や、ちょっとした文書処理を 行うのに最適な方法です。 コマンドラインでPHPを使うの章に詳しい情報があります。 @@ -122,8 +123,8 @@ CGI としても動作します。 - つまりPHPを使用する場合にはOSとウェブサーバーを自由に選ぶことが出来ます。 - さらに手続き型のプログラミングかオブジェクト指向のプログラミングか、 + つまり、PHPでは開発者が OS とウェブサーバーを自由に選ぶことができます。 + さらには手続き型プログラミングかオブジェクト指向プログラミングか、 もしくはそれらを混在させるかといった選択を行うこともできます。 @@ -174,8 +175,8 @@ などのように PHP のマニュアルに記載されていないものもあります。 - お分かりの通り、このページではPHPの機能やPHPを使用することの利点を全て - 紹介することは出来ません。PHPのインストール + このページだけではPHPの機能やPHPを使用することの利点を全て + 紹介することはできません。PHPのインストール の章を読んでみてください。紹介された拡張モジュールに関しては関数リファレンスを読んでみてください。 diff --git a/reference/openssl/functions/openssl-decrypt.xml b/reference/openssl/functions/openssl-decrypt.xml index 9c34f3df28..85c29837c7 100644 --- a/reference/openssl/functions/openssl-decrypt.xml +++ b/reference/openssl/functions/openssl-decrypt.xml @@ -1,6 +1,6 @@ - + @@ -22,7 +22,7 @@ 未加工の、または base64 エンコードされた文字列を受け取り、 - 与えられた暗号化方式とキーを使って文字列を復号します。 + 与えられた暗号化方式とパスフレーズを使って文字列を復号します。 @@ -52,8 +52,16 @@ passphrase - キー + パスフレーズ。パスフレーズが期待するよりも短い場合は、暗黙的に NUL + 文字でパディングされます。パスフレーズが予想より長い場合、暗黙的に切り詰められます。 + + + パスフレーズは、その名前から連想されるような安全な鍵生成機能は内包していません。 + 内部で処理される唯一の操作は、期待する鍵長と異なる場合に NUL で + パディングしたり、切り詰めたりするだけです。 + + @@ -70,7 +78,9 @@ iv - NULL ではない初期化ベクトル + &null; ではない初期化ベクトル。 IV が期待よりも短い場合は、NUL + 文字でパディングされ、警告が発行されます。 + パスフレーズが期待よりも長い場合は、切り捨てられ、警告が発行されます。 diff --git a/reference/openssl/functions/openssl-dh-compute-key.xml b/reference/openssl/functions/openssl-dh-compute-key.xml index 3b80aa9d19..fb484505a6 100644 --- a/reference/openssl/functions/openssl-dh-compute-key.xml +++ b/reference/openssl/functions/openssl-dh-compute-key.xml @@ -1,6 +1,6 @@ - + @@ -20,6 +20,12 @@ リモート側と秘密の通信をするための暗号鍵としてよく使われます。 これはディフィー・ヘルマン鍵共有として知られています。 + + + リモートとローカルのキーペアに同じ DH パラメータを使用することが重要です。 + そうしないと、両者の間で生成されたシークレットが一致しなくなります。 + + ECDH は、PHP 8.1.0 以降、かつ diff --git a/reference/openssl/functions/openssl-encrypt.xml b/reference/openssl/functions/openssl-encrypt.xml index 1e7d785ce6..a39ac97155 100644 --- a/reference/openssl/functions/openssl-encrypt.xml +++ b/reference/openssl/functions/openssl-encrypt.xml @@ -1,6 +1,6 @@ - + @@ -22,7 +22,7 @@ inttag_length16 - 与えられた文字列を与えられたメソッドとキーで暗号化して、 + 与えられた文字列を与えられたメソッドとパスフレーズで暗号化して、 未加工の、または base64 エンコードされた文字列を返します。 @@ -58,6 +58,13 @@ 期待された長さより長かった場合は、 黙って切り詰められます。 + + + パスフレーズは、その名前から連想されるような安全な鍵生成機能は内包していません。 + 内部で処理される唯一の操作は、期待する鍵長と異なる場合に NUL で + パディングしたり、切り詰めたりするだけです。 + + @@ -74,7 +81,9 @@ iv - NULL ではない初期化ベクトル。 + &null; ではない初期化ベクトル。 IV が期待よりも短い場合は、NUL + 文字でパディングされ、警告が発行されます。 + パスフレーズが期待よりも長い場合は、切り捨てられ、警告が発行されます。 diff --git a/reference/openssl/functions/openssl-open.xml b/reference/openssl/functions/openssl-open.xml index 70d3ffce0f..3beba32621 100644 --- a/reference/openssl/functions/openssl-open.xml +++ b/reference/openssl/functions/openssl-open.xml @@ -1,6 +1,6 @@ - + @@ -20,14 +20,14 @@ stringnulliv&null; - openssl_open は、キー ID - private_key およびエンベロープキー - encrypted_key に関連する公開鍵を使用して、 + openssl_open は、 private_key を使用して + encrypted_key から復号されたエンベロープキーによって data をオープン(復号)します。 - その上で、output を復号化したデータで埋めます。 - エンベロープキーは、データがシール(暗号化)された際に生成され、特定の - 一つの公開鍵でのみ使用することが可能です。詳細な情報については、 - openssl_seal を参照ください。 + 復号は cipher_algoiv を使用して行なわれます。 + IV は暗号方式が要求する場合にのみ必要です。復号されたデータは output に + 格納されます。エンベロープキーは通常、秘密鍵に関連付けられた公開鍵を用いてデータがシール(暗号化) + されたときに生成されます。 + 詳細は openssl_seal を参照ください。 @@ -39,6 +39,7 @@ data + シール(暗号化)されたデータ。 @@ -46,7 +47,7 @@ output - 成功した場合、オープンしたデータをここに返します。 + 成功した場合、オープンしたデータをこのパラメータのリファレンス変数として返します。 @@ -54,6 +55,7 @@ encrypted_key + private_key を用いて復号できる暗号化された対称鍵。 @@ -61,6 +63,7 @@ private_key + encrypted_keyの復号に用いられる秘密鍵。 @@ -68,10 +71,10 @@ cipher_algo - 暗号化方式 + dataの復号に使用される暗号化方式。 - デフォルト値 ('RC4') はセキュアでない値です。 + PHP 8.0 より前のデフォルト値 ('RC4') は安全ではありません。 明示的にセキュアな暗号化方式を指定することを強く推奨します。 @@ -82,7 +85,9 @@ iv - 初期化ベクトル。 + dataの復号に用いられる初期化ベクトル。暗号方式が IV を要求する場合に必要です。 + これは cipher_algoopenssl_cipher_iv_length + を呼び出すことで確認できます。 @@ -139,24 +144,19 @@ ]]> diff --git a/reference/openssl/functions/openssl-pbkdf2.xml b/reference/openssl/functions/openssl-pbkdf2.xml index 490d2100ac..3668a33a4a 100644 --- a/reference/openssl/functions/openssl-pbkdf2.xml +++ b/reference/openssl/functions/openssl-pbkdf2.xml @@ -1,6 +1,6 @@ - + @@ -40,7 +40,7 @@ salt - PBKDF2 は、暗号化のソルトとして、少なくとも64ビット(8バイト)を推奨しています。 + PBKDF2 は、暗号化のソルトとして、少なくとも128ビット(16バイト)を推奨しています。 @@ -56,8 +56,11 @@ iterations - イテレーションの回数。 - NIST は少なくとも10000を推奨しています. + 反復回数。 + + NIST は最低でも1000を推奨しています。 + 2023 年の時点で、OWASP は PBKDF2-HMAC-SHA256 に対して 600,000 回、 + PBKDF2-HMAC-SHA512 に対して 210,000 回の反復を推奨しています。 @@ -67,7 +70,7 @@ オプションのハッシュまたはダイジェストアルゴリズム。 アルゴリズムの一覧は、openssl_get_md_methods で得られます。 - デフォルトは SHA-1 です。 + デフォルトは SHA-1 ですが、SHA-256 または SHA-512 を推奨しています。 diff --git a/reference/openssl/functions/openssl-pkey-derive.xml b/reference/openssl/functions/openssl-pkey-derive.xml index 0e862a1461..e500e9369b 100644 --- a/reference/openssl/functions/openssl-pkey-derive.xml +++ b/reference/openssl/functions/openssl-pkey-derive.xml @@ -1,6 +1,6 @@ - + @@ -51,8 +51,16 @@ key_length - 0でない場合、生成するシークレットの長さを指定します。 + 0でない場合、生成するシークレットの長さを設定しようと試みます。 + + + このパラメータは期待どおりに機能しないため、使用しないでください。 + シークレットが素数のサイズよりも長くなることはありません。 + 必要な長さが素数のサイズより小さい場合、ECDH キーの場合のみ長さを切り詰めますが、 + DH キーの場合は失敗します。 + + diff --git a/reference/openssl/functions/openssl-seal.xml b/reference/openssl/functions/openssl-seal.xml index 98eeb0fd5b..53711f720d 100644 --- a/reference/openssl/functions/openssl-seal.xml +++ b/reference/openssl/functions/openssl-seal.xml @@ -1,6 +1,6 @@ - + @@ -20,15 +20,14 @@ stringiv&null; - openssl_seal は、ランダムに生成された秘密鍵 - および指定した cipher_algo を使用して data をシール(暗号化) - します。このキーは、public_key を ID とする - 公開鍵で暗号化されます。 - それぞれの暗号化されたキーは encrypted_keys で返されます。 - これは、暗号化されたデータを複数の受信者に - 送信できることを意味します(この際、各受信者は送信側に公開鍵を - 提供します)。各受信者は、暗号化されたデータとその受信者の - 公開鍵で暗号化されたエンベロープキーを受け取る必要があります。 + openssl_seal は、指定された cipher_algo を使用して + ランダムに生成された秘密鍵で data をシール(暗号化)します。 + その鍵は続いて public_key 配列内の各公開鍵で暗号化され、 + それぞれ暗号化されたエンベロープキーは encrypted_keys パラメータの + 変数リファレンスに返されます。これによって、(公開鍵が利用可能なら) 複数の受信者にシールされた + データを送信できます。各受信者は、シールされたデータと受信者の公開鍵で暗号化されたエンベロープキー + の両方を受け取らなければいけません。 + 生成された IV (初期化ベクトル) は iv パラメータの変数リファレンスに返されます。 @@ -76,7 +75,7 @@ 暗号化方式 - デフォルト値 ('RC4') はセキュアでない値です。 + PHP 8.0 より前のデフォルト値 ('RC4') は安全ではありません。 明示的にセキュアな暗号化方式を指定することを強く推奨します。 @@ -87,8 +86,15 @@ iv - 初期化ベクトル。 + dataの復号に用いられる初期化ベクトル。暗号方式が IV を要求する場合に必要です。 + これは cipher_algoopenssl_cipher_iv_length + を呼び出すことで確認できます。 + + + 初期化ベクトルは明示的に設定できません。設定された値はランダムに生成された値で上書きされます。 + + @@ -151,26 +157,18 @@ 0) { + // $sealed と $iv の値を格納し、後で openssl_open で使用することもできます。 + echo "success\n"; +} ?> ]]> diff --git a/reference/zip/constants.xml b/reference/zip/constants.xml index 84ead351b2..65a25c543c 100644 --- a/reference/zip/constants.xml +++ b/reference/zip/constants.xml @@ -1,6 +1,6 @@ - + @@ -954,6 +954,19 @@ + + + ZipArchive::ER_TRUNCATED_ZIP + (int) + + + + zip アーカイブが切り詰められているか破損している可能性があります。 + PHP 8.4.0 以降、 PECL zip 1.22.4 以降で利用可能です。 + それぞれ、libzip ≥ 1.11.1 以降でビルドした場合に利用できます。 + + +