31

私は PHP コーディングに少し慣れていませんが、PHP コードをサニタイズしていないと、悪意のあるユーザーが Web サイトをハッキングできることを認識しています。私が疑問に思っているのは、データ入力ボックスが必要かどうかです (ファイルの送信や、ユーザー名/パスワードの入力フィールドなど)。

「include (header.php)」のようなコマンドにも何らかのセキュリティが必要ですか、それとも本質的に安全ですか?

4

8 に答える 8

58

他の言語と同様に、PHP コードはプログラマーが記述したものと同じくらい安全です。

また、他の言語と同様に、個々の (そして一般的な) セキュリティ リスクは、StackOverflow の回答に含めるにはあまりにも多く、詳細です。

セキュアな PHP コーディングについて説明している本を見つけてください。

于 2009-10-06T18:07:39.747 に答える
22

ユーザーを信用しないでください。

include "a/literal/file.php";

かなり安全です

include $someFile;

$someFile がどのように設定されるかを考えたいという意味です。ユーザーから提供されたデータを使用して $someFile の値を設定する場合は、それをサニタイズすることをお勧めします。

于 2009-10-06T18:10:04.483 に答える
10

2006 年に sla.ckers.org の投稿から RSnake を引用するには:

私が興味深いと思ったのは、Stefan Esser が PHP インシデント対応チームを退職したことです。取締役会で宗教戦争を始めるわけではありませんが、興味深いのは、PHP のセキュリティ対応チームの創設者が、PHP のセキュリティの欠如にうんざりして退職したことです。彼のサイトは現在ダウンしています (トラフィック フラッド?): [blog.php-security.org] キャッシュのカット アンド ペーストは次のとおりです。

2006 年 12 月 9 日(土)

昨夜、ようやく PHP セキュリティ レスポンス チームを退職しました。最初は数年前から考えていました。

これには多くの理由がありますが、最も重要な理由は、PHP のセキュリティを内部から改善しようとする試みは無駄であることに気付いたことです。PHP のセキュリティ問題をユーザーのせいにしようとするとすぐに、PHP グループはあなたの船に飛び込みますが、PHP 自体のセキュリティを批判するとすぐに、あなたは無礼な人物になります。PHP のセキュリティ ホールを公開したり、Suhosin を開発したことで、不道徳な裏切り者と呼ばれた回数を数えることをやめました。

通常の PHP ユーザーにとって、これはセキュリティ ホールへの応答時間の遅さをアドバイザリで隠す必要がなくなることを意味します。また、PHP セキュリティ レスポンス チームが何ヶ月も修正を拒否したため、私のアドバイザリの一部がパッチなしで提供されることも意味します。また、PHP のセキュリティ ホールに関する勧告がさらに増えることも意味します。

Stefan Esser による PHP、セキュリティの 10:58 での投稿

恐ろしく聞こえるかもしれませんが、ついに PHP セキュリティの「本物」を手に入れることができて本当に興奮しています。私はいつもそれについて少し警戒してきました.Stefanが何を言わなければならないかを見るのは興味深いでしょう.

ソース: http://sla.ckers.org/forum/read.php?2,3976

Hardened PHP プロジェクト、Suhosin http://www.hardened-php.net/suhosin/および Esser の Month of PHP Bugs プロジェクトhttp://www.php-security.org/をうまく紹介します。

于 2009-10-14T16:17:22.097 に答える
5

PHP は何よりも安全です。ただし、デフォルトではなく、プログラマーのスキルに依存しています。デフォルトでセキュリティに役立つ傾向がある.NETとは異なります。

インクルードは安全ですが、パスが動的に生成されている場合は注意してください。

以下は無害です (myfile.php のコードによって異なります)。

include("mypath/myfile.php");
于 2009-10-06T18:10:24.530 に答える
5

データ入力ボックスに関しては、SQL インジェクション攻撃、オーバーフロー、不正な文字などに注意する必要があります。まず、、、などの関数を調べてfilter_var()ください。mysql_real_escape_string()pg_escape_string()

于 2009-10-07T20:34:17.730 に答える
4

ここにいるすべての人に同意します-PHP自体は、他のどの言語よりも実際には多かれ少なかれ安全ではありません。

ただし、ファイルを詳しく調べる必要がphp.iniあります。おそらく、すべてのディレクティブについて学ぶ必要があります。これは、多くの人が早い段階で間違いを犯す場所です。

于 2009-10-07T01:39:44.937 に答える
1

具体的に質問に答えると、言語としてのPHPは非常に安全です。言語自体については、最新の安定したビルドを使用して、言語ベースのセキュリティを維持することをお勧めします。phpメンテナは、バグを作成して修正するものです;)

于 2009-10-06T20:38:59.113 に答える
1

あなたの質問はかなり広く一般的ですが、あなたが行った特定の点に対処するために:

include (header.php);

比較的安全ですが、

include ($header);

$header割り当て方法やサニタイズされているかどうかによっては、危険なセキュリティ ホールになる可能性があります。

于 2009-10-06T18:11:34.710 に答える