Web サーバー側の地平線を見渡すと、PHP のようなスクリプト言語が非常に人気があることがわかります。
おそらく、開発のスピードとプログラミングの容易さによるものでしょう。ただし、スクリプト化された言語は人間が判読できるので、ここでコードのセキュリティが問題になることはありません。
サーバー上のコードのセキュリティに関心がある場合、どのサーバー言語/テクノロジが最も適しているかを知りたいです。
Web サーバー側の地平線を見渡すと、PHP のようなスクリプト言語が非常に人気があることがわかります。
おそらく、開発のスピードとプログラミングの容易さによるものでしょう。ただし、スクリプト化された言語は人間が判読できるので、ここでコードのセキュリティが問題になることはありません。
サーバー上のコードのセキュリティに関心がある場合、どのサーバー言語/テクノロジが最も適しているかを知りたいです。
サーバー側の言語を使用すると、FTP プロトコル (または SSH) にアクセスできる人だけがファイルを見ることができます。Web を定期的に閲覧している場合、PHP やその他のスクリプト言語は表示されません。
実際の言語セキュリティに関しては、小さなバグが見つかる可能性がありますが、それはすべての言語で発生します。スクリプトのセキュリティは、スクリプトの設計方法によって異なります。
ほとんどの場合、すべての言語が安全ですが、すべてのプログラマーが安全というわけではありません。
スクリプト化された言語は人間が判読できるので、ここでコードのセキュリティが問題になることはありません。
いいえ、ソースを公開しない限り、Web 上のユーザーがサーバーサイド プログラムのコードを見ることはありません。
Web アプリケーションのいくつかのセキュリティ問題は、サーバー側で使用される言語のタイプに起因します。バッファ オーバーフローは、C に典型的なセキュリティ問題です。したがって、スクリプト言語は実際には、この点でより安全です。
今日の Web アプリの典型的なセキュリティ問題は、クライアント、サーバー、データベース、およびユーザーが入力したデータの相互作用から生じます。
Ruby on Rails (またはその他の多く) のような最新の Web フレームワークは、これらの問題のいくつかを回避するのに役立ちます。しかし、それでもWeb セキュリティについて 多くのことを学ぶ必要があります。
「Javascript を避ける」ということは、「車を避ける」ようなものです。Javascript は、最新の Web アプリケーションに不可欠な要素です。
すべての本格的な (Piet、Malbolge などを無視する) プログラミング言語は、人間が判読できます。明示的なコンパイル手順が必要かどうかは、アプリケーションのセキュリティにはまったく影響しません。
セキュリティに細心の注意を払いたい場合は、Haskell や Ada など、検証や証明が容易な言語を使用してください。典型的な Web アプリケーションは、Python や Ruby などの最新の動的言語で問題ないでしょう。パフォーマンス上の理由から、Java と C# も人気があります。これらのいずれも、PHP、Perl/CGI、または従来の ASP などのレガシー プラットフォームよりも、安全なアプリケーションの開発を大幅に容易にします。
最後に、小さな不満として、PHP、Python、Ruby、Perl などはスクリプト言語ではありません。
コードを保護するための本当に安全な唯一の方法は、ISAPI または CGI を使用し、C、C++、VB 5 以降、.NET、Delphi 5 以降などのハード コンパイル言語でアプリケーションを開発することです。 . バイトコードまたは解釈された言語は、何をしても逆コンパイルできます。新しい難読化手法は、しばらくクラッカーを拘束する可能性がありますが、常にソースを取得する方法を見つけます。ソースがそこにあり、逆コンパイル ルーチンがあり、ソースがフレームワークによって使用されることを明らかにする必要があるため、クラッカーがしなければならないことは、途中でソースをキャッチすることだけです。
コードを「隠す」ために、これをサポートするいくつかの異なる言語があります。.NET 言語をコンパイルすると、サーバーに元のソース コードを含めずに DLL を生成できます。ただし、これらは .NET Reflector などで読み取ることができるため、それを回避するには、コードで Dotfuscator などを実行して、読み取りをより困難にします。
PHP の場合、スクリプトをエンコードするionCube などのソリューションがあり、それらを実行するには、サーバー上で追加のデコーダーを使用して実行する必要があります。通常、これはスクリプトを再販するときに使用されるため、クライアントはソースを見たり変更したりできません。
言語には小さな部分があります。ただし、コードを実際にどのように設計し、記述するかについては、多くのことが関係しています。
ASP.NET は dll にコンパイルされるため、サーバー上でコードを人間が読み取ることはできません。しかし、PHP であっても、コードはサーバー上で実行されます。
クライアントに表示され、人間が読める JavaScript には近づかないでください。
私の主な好みは .NET ですが、PHP のようなスクリプト言語を使用しても、生のコード ファイルを読み取るためのアクセス権をユーザーに付与しない限り、生のコードは表示されません。非常に安全な PHP サイトをいくつか見てきました。人々が何を見たりアクセスしたりできるかが気になる場合は、Javascript などのクライアント側のスクリプト言語に何を入れているかを確認する必要があります。