PHP アプリケーションは次の理由でハッキングされることがよくあります:
PHP アプリケーションが多すぎる。
学ぶのも書くのも簡単です。
下手なPHPも書きやすい。
それはとても簡単です。 PHP は長年にわたって人気があります。 PHP の人気が高まるにつれて、より多くの脆弱性が発見されます。これらのハッカーによって発見された脆弱性が PHP 処理エンジン自体に存在することはほとんどありませんが、通常はスクリプト自体の弱点です。
これは、PHP アプリケーションがハッキングされるとき、それは主にプログラマーのせいであることを意味します。申し訳ありませんが、本当です。
他のWeb言語と同じように安全なPHPを書くことができます。セキュリティ問題を本格的に検討し始める時期が来ました。
PHP ハッキングに対する最善の保護
安全な PHP コードを書くことは、PHP 開発者に隠された秘密の黒魔術ではありません。しかし、信頼性は非常に細分化されているため、適切なセキュリティ実践に関する大まかなカタログや経験則を収集するのに数週間から数か月 (またはそれほど長くはかからない) を費やす必要があります。それがどれほど重要であるかは、本当の経験だけが教えてくれます。
ありがたいことに、ベン・エドマンズがあなたのためにやってくれました。最近出版された『Building Secure PHP Apps – a Practical Guide』は、私がこれまでに読んだセキュリティ関連書籍の中で最も優れた書籍の 1 つであり、間違いなく PHP について最も詳しく解説されています。この記事では、すべての PHP 開発者がこの本を読むべきだと私が考える理由を詳しく説明します。
この本は、開発者として次のレベルに進み、より優れた、より安全なスクリプトを作成できるようにするための簡潔なガイドです。
はじめに
この本は、ユーザーを信頼しない、すべての入力をフィルタリングするというWeb開発の常識的なルールにすぐに触れます。小さなシナリオから始めて、ユーザーがシステムに入る技術的な方法に進みます。最初の章のトピックは次のとおりです:
SQL インジェクション
割り当てられた多数のフィールド
型変換
入出力のフィルタリング
これらは、PHP 初心者 (および一部のベテラン) が常に見落としがちな領域です。入力のフィルタリングは多くの人にとってオプションのステップであると考えられており、この章で詳しく説明します。
読みながら、何年も前の初出勤日を思い出しました。そのとき、既存のコードを深く掘り下げて、新しいユーザー作成スクリプトのコードを見つけました:
if ($_POST["isadmin"] == 1) { // code to set to admin in database }
このコードを見たとき、とても興奮しました。パニックになりましたこれは非常に効率的なスクリプトであるため、悪意のあるユーザーが簡単に悪用して単純なフォーム変数を推測して挿入し、約 5,000 のクレジット カード番号やその他の個人情報にアクセスできる可能性があります。
さらに深く掘り下げると、次のコードを見つけました:
$sql = "INSERT INTO database (id,name,...) VALUES (" . $_POST["Name"] . ");"
彼らがこの恐ろしいコードに依存していたので、私は初日でその仕事を辞めることになりました。コードはそこにあります。これ以上コードを作成しないようにコードを変更するのはあなたの責任です。
この章では、このようなコードが大きなリスクとなる理由とその修正方法について説明します。
HTTPS と証明書
これは、Ben がスクリプト、ストーリー、そして少しのユーモアを盛り込みながら、HTTPS のあまり明確ではない概念についても明確に説明するもう 1 つの分野です。上司にも分かるように説明してくれます。
この本では、証明書の仕組み、証明書の種類、実装方法を、Apache または Nginx にデプロイする方法も含めて、非常に包括的に説明しています。
パスワード
この本は、パスワード、ハッシュ、ルックアップテーブル、ソルトについて丁寧に説明しており、ユーザーログインシステムを作成する開発者にとって非常に役立ちます。
これは2014年でもひどく欠けていた領域だ。パスワードを平文で保存したり、パスワードを保護するために ROT13 暗号化などの愚かな方法を使用したりするアプリを今でも見かけます。人々にあなたのアプリを使い続けてもらい、あなたの評判を良くするために、このようなことはしないでください。
パスワードやその他の機密データは入手が非常に困難でなければならず、そうでなければ誰かがデータベースに完全にアクセスできる可能性さえあります。この本は非常に包括的であり、より良いシステムを設計するための優れたガイダンスを提供します。
認証とアクセス制御
この本は非常に包括的なトピックをカバーしています。新しい PHP アプリケーションを構築する場合、最も重要な考慮事項は次のとおりです:
誰がどのリソースにアクセスできるか?
他のユーザーのアクセスを制御できるのは誰ですか?
これはアプリケーション、特に機密データを扱うアプリケーションについて考える重要な場所です。企業内の開発のかなりの部分がこれに当てられています。認証とアクセス制御が正しく設定されていない場合、最も可能性が高いのは、ユーザーを混乱させ、作業が増えることです。これよりもさらに悪いのは、サーバー データのギャップやデータの破損です。
この本は基本をうまくカバーしており、その後、ファイルやアプリケーションの個々のページへのアクセスの制御などについて詳しく説明しており、参考となるコード例がたくさんあります。
特定のエクスプロイト
この本では、システムを侵害するための一般的なエクスプロイトをいくつか取り上げ、おそらく攻撃者がアプリケーションを悪用する最も一般的な方法であるクロスサイト スクリプティングについて詳しく説明します。さまざまな種類の攻撃と身を守る方法について説明します。
悪くないですよね?このリンクから書籍を割引価格で購入できます!
この本で私が最も気に入った点
この本を読んで本当に気に入ったのは、初心者と経験豊富なプログラマの両方に役立つ方法で情報が提示されている点です。さまざまな概念が示され、それらが何であるか、そして自分自身を守る方法が示されています。一部の技術書にあるような「詰め込み」ではなく、コード例が豊富にあります。
この本は内容が少ないのですぐに読み終えることができます。初心者はこの本を読み、各トピックを調べ、コードを確認し、修正することができます。この点に関しては、常に見直しを行う必要があることを忘れないでください。振り返ってみて、6 か月前に書いたコードを恥ずかしく思うなら、あなたは正しいことをしているということです。
より高度で経験豊富なプログラマーは、このガイドを使用して自分の弱点を補い (認めてください、この業界でどれだけ長く働いているかに関係なく、弱点があることを認めてください)、自分の仕事で使用するシステムをより深く理解することができます。たとえば、私は何年も認証を狂ったように使ってきましたが、この本で取り上げているレベルで認証について考えたことはありませんでした。
どんな人であっても、何かを学ぶことはあります。したがって、この記事を読むのをやめて、本を購入してください。このリンクを使用して購入し、割引を受けてください。 !