3

私は、PHP と MySQL を使用して、ホストされている会社と一緒に Web サイトに取り組んでいます。

私は SQL インジェクションと XXS に精通しており、これらが起こらないようにコーディングする方法も知っています。ただし、Web サイトの脆弱性をテストする予定です。

さて、私は Web 開発の初心者であり、Web サイトのセキュリティについて読むべきことがたくさんあることを知っています。

  1. PHP と MySQL を使用する Web サイトや Web サーバーで通常使用される攻撃には、他にどのようなものがありますか?
  2. これらの攻撃から保護するにはどうすればよいですか?
  3. 私のコードが完璧であっても、ホスティング会社の Web サーバー構成で、Web サーバーを脆弱にする可能性のあるものを探す必要がありますか?
4

2 に答える 2

2

心に留めておくとよいこと:

またはの代わりにPDO、データベースの目的で調べます。(PDO は、さまざまな種類のデータベース間の違いを単純化するラッパーですが、セキュリティも大幅に単純化します)。mysqlmysqli

PDO のプリペアド ステートメントを使用すると、クエリの作成が 100 倍簡単になり、常にステートメントを準備している限り、SQL インジェクションをほとんど防ぐことができます (これは、PDO でも非常に簡単です)

他の 2 つの mysql オプションのいずれかで PDO を使用する方法を学ぶには、15 分間を費やすだけの価値があります。

これにより、データベースが危険にさらされるのを防ぐことができますが、後でユーザーに提供するためにデータベースに保存する可能性のあるデータから保護されるわけではありません。

その点で:

  1. フォーム入力から GET/POST 値まで、ユーザーから取得したすべてのものを検証します
  2. ユーザーのページに html として書き込むすべてをエスケープする
  3. ユーザー入力をそのまま使用したり、クラスを選択したりしないでください (例: include $_GET["page"];)

JavaScript -- 私の赤ちゃん:

  1. クロージャーとモジュール/名前空間パターンについて学びます。
  2. 作成するすべての大規模なアプリケーションに使用します (特に、ユーザー情報の収集が必要なアプリケーションなど)。
  3. 開発コンソールを開いて何かを貼り付けるのと同じくらい簡単に、ユーザーがサイトで必要なものを実行するのを防ぐことはできないことを理解してください。
  4. #3 を理解した上で、#1 と #2 を使用して、#3 を実行しているユーザーがユーザーから提供された (またはユーザーについて保持している) データにアクセスできないようにする方法を学びます。

一般に、ユーザー情報を Cookie や URL 文字列から除外し、できるだけ多くの情報を JS クロージャー、POST リクエスト、およびユーザーのセッション、サーバー側に保持します。

于 2012-07-21T06:10:29.273 に答える
0

読むのに適したリソースはOWASPです。これには、Web セキュリティに関する情報が満載の巨大な Wiki スタイルのサイトがあります。そこにはたくさんあるので、かなり大変かもしれませんが、ブックマークに入れておくには非常に良いリソースです.

PHP The Right Wayも役に立つと思われるサイトです。これは、PHP コードをより安全に記述し、ベスト プラクティスを使用するのに役立つことを目的としています。このサイトはまだかなり新しいですが、すでにいくつかの良いヒントがあります。

コードに対する私のアドバイス: コードを安全にするためにできる最善の方法は、生の PHP コードを書くのではなく、適切な PHP フレームワークを使用することです。

すべての優れたフレームワークには、危険なコーディング プラクティスを回避するのに役立つライブラリがあります。たとえば、それらはすべて、データベースの作業を容易にするだけでなく、はるかに安全にするデータベース抽象化レイヤーを備えています。使用しているフレームワークのガイドラインに従えば、多くの最悪の危険から身を守ることができます。もちろん、何に注意すべきかを知る必要がありますが、それは大いに役立ちます。

使用するフレームワークについての私の提案は Symphony または CakePHP ですが、他にもたくさんあります。

それが役立つことを願っています。

于 2012-07-21T07:06:38.083 に答える