3

私は最初の「本物の」PHP アプリケーションを完成させようとしており、それが安全であることを確認しようとしています。私は「専門家」の PHP プログラマーではないので、何か大きなものを見逃しているのではないかと心配しています。そのため、私のアプリケーションに関する情報を提供したいと思います。場合。だからここに行きます:

  • ユーザー認証は CMS で行っているので、その心配はありません。
  • アプリケーションの作業を開始してすぐに PDO を発見した後、すべてのコードを PDO で準備済みステートメントを使用するように移植しました。
  • で出力されているすべてのフォームとデータベースデータ(安全だと思うhtmlentities()ものも含む)をエスケープしています。
  • 私のアプリケーションはセッション変数と Cookie 変数を使用しますが、両方の機能は重要ではありません。
  • フォームが何らかの形で変更されたり、オフサーバーから送信されたりしても問題にならないように、フォーム処理機能を設計しました (つまり、送信されたデータが有効であることを常にチェックします)。
  • 私はすべてのエラー メッセージと例外メッセージを丁寧に、しかし非常にわかりにくいものにするために最善を尽くしました。
  • 機密情報を含むページ (ログイン ページなど) を https 経由で提供するよう強制しています。

私が最初にアプリケーションを書き始めたとき、私はプリペアド ステートメントについて知りませんでした。他に見逃したことはありますか?

4

6 に答える 6

5

OWASP は、最も重大な Web アプリケーション セキュリティ リスクのトップ 10のリストを維持しています(警告、PDF ダウンロード)。これは 2010 年の話ですが、今でも当てはまると思います。

インジェクションと XSS がトップ 2 ですが、他の 8 つについても注意する必要があります。既存の CMS を使用している場合、これらの多くはすでに考慮されている可能性がありますが、CMS が普及すればするほど、脆弱性に遭遇するリスクが高くなります。黒い帽子が穴を見つけようとしています。

クレジット カード、注文履歴、住所、さらには電子メールなどの重要なデータを保存していない場合は、基本的な予防措置を講じている限り、サイトが影響を受けることについてあまり心配する必要はありません。 )。

于 2012-11-12T22:30:59.230 に答える
3

セキュリティの問題が気になる場合は、OWASP - Top 10 Application Security Risksが適切なリソースです。

于 2012-11-12T22:29:32.667 に答える
2

Web アプリケーション (特に PHP) で注意すべき最も重要なことは、データベースにさらに保存される、ユーザーから取得したすべての入力のデータ検証です。

アプリケーションを安全にするには、すべてのトランザクションを HTTPS で実行する必要があります。安全な Cookie 管理のために、安全なHTTPOnly Cookie を実装する必要があります。

于 2015-04-19T04:09:52.563 に答える
1

残るものはいつも一つ。可用性 :) セキュリティには 3 つの側面があります。

  • 機密性(アクセス権のないものは誰も読むことができません)
  • 整合性(誰も変更すべきデータを変更することはできず、変更が行われたかどうかを検出できなければなりません)
  • 可用性(利用可能でなければならないデータ、アプリケーション)

最初の 2 つ (資格情報、準備されたステートメント、html エンティティなど) はほとんどうまく処理できましたが、DoS 攻撃に対してはどれも役に立ちません。誰かがあなたのサイトを平手打ちしたかどうかを検出し、サーバーから攻撃者の IP を禁止できるはずです。これは PHP で実行できますが (攻撃者にフレームワークやデータベース接続などを初期化させるよりも、攻撃者を php の最初の行でキックする方がはるかに優れています)、下位層 (nginx/apache など) でより効果的に実行できます。 iptables、snort)。

しかし、あなたが求めているのは通常、リスク管理の問題です。実際のアプリケーションでは、考えられるすべての攻撃、エッジ ケースなどに備えることはできません。必要なことは、確率と影響によってすべてのリスクを分類することです ( http://www.jiscinfonet.ac.uk /InfoKits/infokit-related-files/Resources/Images/risk-matrix )。これにより、最も重要な (最も高い) リスクに最初に集中でき、おそらく下の部分を完全に無視できます。

于 2012-11-13T00:19:06.047 に答える
1

まだ言及されていないいくつかのポイント。これらのほとんどはコードに関連していません。コードに関連したものだけを望んでいたかどうかはわかりませんが、とにかく言及します。

  • バックアップ (ユーザー データ)。自明であるべき
  • バージョン管理。大きなバグがある場合は、以前のバージョンにアクセスしたいと思うでしょう。
  • 監査証跡、アラーム、およびロギング。トラブルに巻き込まれた場合、どうやって見つけますか?何が起こったのか追跡できますか?何かが間違っていることはわかっているが、何が問題なのか完全にはわからない場合、問題を診断できますか?
  • ホスティング。どこでホストしていますか? 十分な帯域幅と監視がありますか? DOS化したらどうなる?不要なトラフィックをブロックできますか?
  • キャッシング。必要に応じて変更できますか?
于 2012-11-12T22:46:04.937 に答える
0

SQL インジェクションと XSS は、最も有名なハッキング手法です。

準備済みステートメントを使用すると、SQL インジェクションから保護されます。

また、HTML を表示するすべての場所で htmlentities() を使用すれば安全です。

于 2012-11-12T22:30:00.057 に答える