com doc/ja: Remove magic quote mentions: faq/using.xml reference/info/functions/get-magic-quotes-gpc.xml security/magicquotes.xml
[email protected] (Yoshinari Takaoka) Sat, 16 Jan 2021 11:04:07 +0000
| Newsgroups | php.doc.ja |
|---|---|
| Message-ID | <[email protected]> |
Commit: 1d315bbcf05076083cc6786244b8b048999611d8 Author: Yoshinari Takaoka <[email protected]> Sat, 16 Jan 2021 20:04:07 +0900 Parents: c5325fd10e692a0c6df87a6ace7dceba1f6267d0 Branches: master Link: http://git.php.net/?p=doc/ja.git;a=commitdiff;h=1d315bbcf05076083cc6786244b8b048999611d8 Log: Remove magic quote mentions Changed paths: M faq/using.xml M reference/info/functions/get-magic-quotes-gpc.xml D security/magicquotes.xml
diff_1d315bbcf05076083cc6786244b8b048999611d8.txt
(text/plain, 14.5 KB)
diff --git a/faq/using.xml b/faq/using.xml
index 1a56cd304d..af9f9b4658 100644
--- a/faq/using.xml
+++ b/faq/using.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 86e6094e86b84a51d00ab217ac50ce8dde33d82a Maintainer: hirokawa Status: ready -->
+<!-- EN-Revision: f029b664b8728bd5cbb697cb9a4409aea07cb36c Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi,mumumu -->
<chapter xml:id="faq.using" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -100,35 +100,9 @@ if (empty($empty)) {
<function>stripslashes</function> もありますが、
これはさらに古い時代の PHP コードで使われていたものです。
</para>
-
- ¬e.magicquotes.gpc;
-
</answer>
</qandaentry>
- <qandaentry xml:id="faq.using.stripslashes">
- <question>
- <para>
- " は \" に、また ' は \' に全て変換されているのですが、
- これら無用なバックスラッシュを除去するにはどうしたらよいですか?
- どうやって、そしてなぜ、こんなことになっているのでしょう?
- </para>
- </question>
- <answer>
- <para>
- なぜかバックスラッシュがついてしまう、という現象の原因のほとんどは、PHP の
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- ディレクティブが On になっていることです。これは古い時代の PHP
- の機能であり、現在は無効にしておくべきものです。この仕組みに頼ってはいけません。
- 文字列からバックスラッシュを取り除くために、PHP の
- <function>stripslashes</function> を使うことができます。
- </para>
-
- ¬e.magicquotes.gpc;
-
- </answer>
- </qandaentry>
-
<qandaentry xml:id="faq.register-globals">
<question>
<para>
diff --git a/reference/info/functions/get-magic-quotes-gpc.xml b/reference/info/functions/get-magic-quotes-gpc.xml
index 5c8a25ae77..71e6759cf8 100644
--- a/reference/info/functions/get-magic-quotes-gpc.xml
+++ b/reference/info/functions/get-magic-quotes-gpc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 3e15d2894fb35432d2a111db36fe8ba8ebc62024 Maintainer: hirokawa Status: ready -->
+<!-- EN-Revision: f029b664b8728bd5cbb697cb9a4409aea07cb36c Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi,mumumu -->
<refentry xml:id="function.get-magic-quotes-gpc" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
@@ -19,26 +19,14 @@
<void/>
</methodsynopsis>
<para>
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- の現在の設定を返します。
- </para>
- <para>
- 実行時に
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- をセットしようとしても反映されないことに留意してください。
- </para>
- <para>
- magic_quotes についての詳細な情報は
- <link linkend="security.magicquotes">セキュリティの欄</link>
- を参照してください。
+ 常に &false; を返します。
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
- magic_quotes_gpc がオフの場合に 0、そうでない場合に 1 を返します。
- PHP 5.4.0 以降は、常に &false; を返します。
+ 常に &false; を返します。
</para>
</refsect1>
@@ -66,37 +54,6 @@
</para>
</refsect1>
- <refsect1 role="examples">
- &reftitle.examples;
- <para>
- <example>
- <title><function>get_magic_quotes_gpc</function> の例</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-echo get_magic_quotes_gpc(); // 1
-echo $_POST['lastname']; // O\'reilly
-echo addslashes($_POST['lastname']); // O\\\'reilly
-
-if (get_magic_quotes_gpc()) {
- $lastname = stripslashes($_POST['lastname']);
-}
-else {
- $lastname = $_POST['lastname'];
-}
-
-// MySQL を使っている場合
-$lastname = mysql_real_escape_string($lastname);
-
-echo $lastname; // O\'reilly
-$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
-?>
-]]>
- </programlisting>
- </example>
- </para>
- </refsect1>
-
<refsect1 role="seealso">
&reftitle.seealso;
<para>
diff --git a/security/magicquotes.xml b/security/magicquotes.xml
deleted file mode 100644
index f553efafc2..0000000000
--- a/security/magicquotes.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- $Revision$ -->
-<!-- EN-Revision: 5b53e0d1772a256cbfa55f6abba783d32f6a9deb Maintainer: shimooka Status: ready -->
-<!-- CREDITS: hirokawa,mumumu -->
-<chapter xml:id="security.magicquotes" xmlns="http://docbook.org/ns/docbook">
- <title>マジッククオート</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <para>
- マジッククオートは、<acronym>PHP</acronym>スクリプトに入力されるデータを
- 自動的にエスケープする機能です。
- コードでは、マジッククオートをオフにして
- 実行する際必要な時にデータをエスケープすることが望まれます。
- </para>
-
- <sect1 xml:id="security.magicquotes.what">
- <title>マジッククオートとは</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <para>
- オンの場合、全ての<literal>'</literal> (シングルクオート), <literal>"</literal>
- (ダブルクオート), <literal>\</literal> (バックスラッシュ)および<literal>NULL</literal>
- 文字がバックスラッシュで自動的にエスケープされます。
- これは、<function>addslashes</function> の機能と同じです。
- </para>
- <para>
- 3種類のマジッククオートディレクティブを以下に示します。
- </para>
- <itemizedlist>
- <listitem>
- <simpara>
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- </simpara>
- <simpara>
- <acronym>HTTP</acronym>リクエストデータ(GET, POST, そして COOKIE)に作用します。
- 実行時に設定することはできません。
- <acronym>PHP</acronym>のデフォルトは、<emphasis>on</emphasis>です。
- </simpara>
- <simpara>
- <function>get_magic_quotes_gpc</function>も参照してください。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
- </simpara>
- <simpara>
- 有効な場合、データベースやテキストファイルを含む
- 外部ソースからデータを返す関数の多くは、
- バックスラッシュをクオートでエスケープします。
- 実行時に設定することができ、<acronym>PHP</acronym>でのデフォルトは
- <emphasis>off</emphasis>です。
- </simpara>
- <simpara>
- <function>set_magic_quotes_runtime</function>および
- <function>get_magic_quotes_runtime</function>も参照してください。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- magic_quotes_sybase <!-- to be removed later -->
- </simpara>
- <simpara>
- 有効な場合、シングルクオートはバックスラッシュではなくシングルクオートで
- エスケープされます。 onの場合、
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- の指定を完全に上書きします。
- これら両方のディレクティブを有効にすると、シングルクオートは
- <literal>''</literal>とエスケープされます。
- ダブルクオートやNULLはそのままとなり、エスケープされません。
- </simpara>
- <simpara>
- この値を取得するには、
- <function>ini_get</function>も参照してください。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.why">
- <title>なぜマジッククオートを使用していたのか</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <itemizedlist>
- <listitem>
- <simpara>
- もはやマジッククオートを使う理由はありません。
- <acronym>PHP</acronym> ではサポートされなくなるからです。以前は確かに存在し、
- 特に意識せずによりよい (安全な) コードを書けるという意味で
- 一部の初心者の助けとなっていました。
- しかし、この挙動を前提としたコードを見かけたときは
- マジッククオートをオンにするよりコードそのものを書き換えるほうがいいでしょう。
- </simpara>
- <simpara>
- ではいったい、なぜこんな機能が存在していたのか?
- 単純に、<link linkend="security.database.sql-injection">SQL インジェクション</link>
- を防ぐためというだけの理由です。
- いまどきの開発者はセキュリティに対する意識が向上しており、
- マジッククオートなどという機能に頼るよりも
- データベース自体のエスケープ機能やプリペアドステートメントを使った方がよいことに気づいています。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.whynot">
- <title>なぜマジッククオートを使用しないのか</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <itemizedlist>
- <listitem>
- <simpara>
- 移植性
- </simpara>
- <simpara>
- これがonであることを仮定すると、移植性に影響します。
- この確認のために<function>get_magic_quotes_gpc</function>を
- 使用し、適切なコーディングを行ってください。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- 性能
- </simpara>
- <simpara>
- エスケープされたデータが全てデータベースに挿入されるわけではないので、
- このように全てのデータをエスケープすることは性能を低下させます。
- 単に(<function>addslashes</function>のような)エスケープを行う関数を
- 実行時にコールする方がより効率的です。
- </simpara>
- <simpara>
-
- <filename>php.ini-development</filename>はこれらのディレクティブを
- デフォルトで有効にしていますが、
- <filename>php.ini-production</filename>はこれを無効にしています。
- この推奨は主に性能面によるものです。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- 不便
- </simpara>
- <simpara>
- 全てのデータをエスケープする必要はないため、しばしば、
- エスケープするべきではないデータまでエスケープされてしまう問題に
- 悩まされることになります。例えば、フォームからメールを送信する際、
- emailの中に多くの \' が含まれることになります。
- これを修正するために、
- <function>stripslashes</function>を大量に使用することが必要と
- なる可能性があります。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.disabling">
- <title>マジッククオートを無効にする</title>
- <para>
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- ディレクティブはシステムレベルでのみ無効にすることができ、
- 実行時に行うことはできません。
- つまり、<function>ini_set</function> では指定できません。
- </para>
- <para>
- <example>
- <title>マジッククオートをサーバー側で無効にする</title>
- <para>
- このディレクティブを&php.ini;で <literal>Off</literal> にする
- 例を示します。
- より詳細については、
- <link linkend="configuration.changes">
- 設定を変更する方法</link>というタイトルのマニュアルのセクションを
- 参照してください。
- </para>
- <screen>
-<![CDATA[
-; Magic quotes
-;
-
-; Magic quotes for incoming GET/POST/Cookie data.
-magic_quotes_gpc = Off
-
-; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
-magic_quotes_runtime = Off
-
-; Use Sybase-style magic quotes (escape ' with '' instead of \').
-magic_quotes_sybase = Off
-]]>
- </screen>
- <para>
- サーバーの設定を変更できない場合には、
- <filename>.htaccess</filename>も使用できます。
- 例えば、
- </para>
- <screen>
-<![CDATA[
-php_flag magic_quotes_gpc Off
-]]>
- </screen>
- </example>
- </para>
- <para>
- サーバーレベルの設定を変更できない場合に対応するといったように、
- 移植性の高いコード(あらゆる環境で動作するコード)を書く要望に
- 対して、以下に、
- <link linkend="ini.magic-quotes-gpc">
- magic_quotes_gpc</link>を実行時に無効にする例を示します。
- この方法は非効率であるため、どこかでディレクティブを適切に
- 設定する方が良いでしょう。
- </para>
- <para>
- <example>
- <title>マジッククオートを実行時に無効にする</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-if (get_magic_quotes_gpc()) {
- $process = array(&$_GET, &$_POST, &$_COOKIE, &$_REQUEST);
- while (list($key, $val) = each($process)) {
- foreach ($val as $k => $v) {
- unset($process[$key][$k]);
- if (is_array($v)) {
- $process[$key][stripslashes($k)] = $v;
- $process[] = &$process[$key][stripslashes($k)];
- } else {
- $process[$key][stripslashes($k)] = stripslashes($v);
- }
- }
- }
- unset($process);
-}
-?>
-]]>
- </programlisting>
- </example>
- </para>
- </sect1>
-
- </chapter>
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-omittag:t
-sgml-shorttag:t
-sgml-minimize-attributes:nil
-sgml-always-quote-attributes:t
-sgml-indent-step:1
-sgml-indent-data:t
-indent-tabs-mode:nil
-sgml-parent-document:nil
-sgml-default-dtd-file:"~/.phpdoc/manual.ced"
-sgml-exposed-tags:nil
-sgml-local-catalogs:nil
-sgml-local-ecat-files:nil
-End:
-vim600: syn=xml fen fdm=syntax fdl=2 si
-vim: et tw=78 syn=sgml
-vi: ts=1 sw=1
--->