• ベストアンサー

PHPのセキュリティが弱い理由は概念を掴みにくいClassを使わないプログラマーが多いため!?

思ったけど、PHPのセキュリティが弱いのは、もしかしてClassのアクセス制限修飾子(private,public,protected)を使うことが少ないからでしょうか?Javaは最初からそれをやらなければならないから、セキュリティが強いと思うけど…。 ということは、PHPプログラマは皆、Classというオブジェクト指向の難しさを嫌がるため、Classを使わないプログラムが多く出回っているのが現状ではないでしょうか。 皆さんのご意見もお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

オブジェクト指向を理解できない時代遅れのプログラマ又はプログラマ初心者が多いから ではないと思います。 単にPHPそのものの標準関数の脆弱性を知らずに平気で使っている人 セキュリティそのものの意識が薄い人 が多いからでしょう。 classつかってても、SQLインジェクションできてしまうソースも書けますし XSSだって同じ。 PHPそのものの脆弱性を理解していて、セキュリティへの知識や対策方法をしらないSEやPMが悪でしょうね。 プログラマ初心者や見習いプログラマがチームの中に居たとしてもSEやPMがしっかりと教育するなり、コーディング規約を作るなり、ソースレビューするなり をしていない現場が多すぎるだけ。 まぁ、ここまでくるとPHPに限ったことではなくなってきますけどね。 最近は、他の言語をまったく知らずにPHPだけ ってパターンもありがち ・PHPのみプログラマは安い。 ・安いからという理由だけで起用。 ・セキュリティの概念なんて分かるわけも無い。 ・上流工程にプログラムが出来る人が居るわけも無い。 ・上流のアホは、プログラマは何でもできる魔法使いだと思ってる。 ・PHPのみ初心者プログラマが、そんなこと出来るわけもない。 ・入門書にあるソースを丸写ししたような粗悪なコードで構築。 ・セキュリティの事なんて考慮してるはずがない。 ・表面的に動いているものが出来上がるので、上流の人たちは「安いプログラマでも作れるじゃん」という誤解。 ・次回も安いプログラマで良いよね。 ・メンテナンス性をまったく考えていないシステム。 ・脆弱性たっぷりのシステム。 の悪循環。

masa_go
質問者

お礼

ご回答ありがとうございました。 inu2様が仰るように日本のIT企業がここまで待遇が悪いのは給与が安い背景にプログラマのモラル低下に繋がったのではないかでしょうか。また、inu2様が仰る内容のほぼ全てが同意できますね。 モラル低下に繋がることは、やる気減退となり、プログラマの多くは積極的に学習しようとせず、セキュリティが脆弱性に繋がると解釈されても否定はできないでしょうね。ライブラリの多くはほとんど外国で提供されていますし、日本で提供されているところをあまり見かけないですね。 プログラマの給与が安い→プログラマは積極的に学ぼうとしない→本が売れない→脆弱性続出→日本市場縮小→海外投資家嫌気売り続出→景気後退…これはプログラマに限った話ではないと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • masa6272
  • ベストアンサー率66% (93/140)
回答No.2

PHP4までは、可視性の概念がありませんでしたね。 private、protectedなんてなくて、すべてpublicでした。 まだ、多くのシステムはPHP4ベースだと思いますので・・・ クラスと、脆弱性は別の概念だと思いますよ。 可視性は、開発側の問題で、出来上がったシステムの脆弱性とは、あまり関係ないでしょう。

masa_go
質問者

お礼

ご回答ありがとうございました。 >まだ、多くのシステムはPHP4ベースだと思いますので・・・ それは知らなかったです。新たに学ぼうというものが面倒だからと思う人が多いではないでしょうか。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 金融システムやショッピングサイトなどはJavaで構築されているのが一般となっていると思いますが、PHPでもできますでしょうか。

    一般的に金融システムやショッピングサイトなど顧客の個人情報を扱うことや取引による金額の精算をされる場合、Javaで構築されることが多いと思います。それはどうしてでしょうか。 私はPHPでも作成できると思いますがどうでしょうか。PHPはクロスサイトスクリプティングやSQLインジェクションの危険性があるとよく聞きますが、オブジェクト指向であるClassなどアクセス制限修飾子など活用すればJava同等のセキュリティが確保されるのでは…と思いますが、どうでしょうか。

    • ベストアンサー
    • PHP
  • アクセス修飾子

    アクセス修飾子 が理解できません。 ヘルプやインターネットで調べると下記のようにかかれています。 public 『アクセスの制限はありません。 』 protected 『アクセスは、コンテナ クラス、またはコンテナ クラスから派生した型に制限されます。 』 internal 『アクセスは現在のプロジェクトに制限されます。 』 protected internal 『アクセスは、現在のプロジェクト、またはコンテナ クラスから派生した型に制限されます。 』 private 『アクセスはコンテナ型に制限されます。』 public 、private は理解できるのですが、protected 、internal が理解できません。 Javaだとprotectedは同じパッケージ内、サブクラスでアクセス可能とかかれています。 .NETも同じでしょうか? 同じパッケージ内?ってどういうこと?となっています。 1つのオブジェクト内に2つのクラスを作成し、 クラスAのメソッドに protectedで作成し 、クラスBでクラスAの宣言をしたらAのprotectedのメソッドは使用できません。どういう場合にprotectedのメソッドは使用できるのでしょうか?

  • PHPのprivate関数について

    PHPのアクセス修飾子privateについてお聞きします。 以下のようなコードを書いて実行したら、エラーメッセージが出ました。 code: <?php class Super { protected function protectedFunc(){ echo "original-Protected\n\r"; } private function privateFunc(){ echo "Private\n\r"; } public function publicFunc(){ privateFunc(); } } $super = new Super; $super->publicFunc(); ?> error message: Fatal error: Uncaught Error: Call to undefined function privateFunc() in C:\xampp\htdocs\HTML_practice\protected-practice.php:12 Stack trace: #0 C:\xampp\htdocs\HTML_practice\protected-practice.php(17): Super->publicFunc() #1 {main} thrown in C:\xampp\htdocs\HTML_practice\protected-practice.php on line 12 line12 というのは、public 関数であるpublicFunc() の内側で、private関数のprivateFunc() を使おうとした部分ですが、private関数はクラス定義の中だから使えるというのは間違った認識でしょうか? だとするとprivate関数はいつどんな時に使えるのでしょうか? どなたか例を挙げて説明頂けないでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • 修飾子 private protected

    Java での話です。 自分自身とサブクラスからのみアクセスできる変数は作成することはできないのでしょうか。修飾子 private protected の組み合わせは廃止されたようなのですが。 C++ だと、protectedで良かったと思うのですが、Java では同一パッケージからアクセスできるので戸惑ってしまいました。

    • ベストアンサー
    • Java
  • プログラマーと呼ばれる人は。。。

    (1)プログラマと呼ばれる人は、多くの言語に精通しているのでしょうか?(CもJAVAもできます、みたいに。。。) (2)また「Cプログラマ」というような言い方がありますが、この人たちは、Cだけできればいいのでしょうか? (3)CのほかにJAVAプログラマなんて言い方はあるのですか? (4)JAVAはオブジェクト指向に適しているといわれていますが、C++もですよね?Cはどうですか? (5)私はCをちょっとかじった者です。CをしておくとJAVAにとっかかりやすいというのは本当ですか?また、なぜですか? (6)貴方は何の言語に精通していますか?○○と□□と△△の3つです、という風に教えてください。。それから習得にかかった時間をよければ。。 (7)○○をするには何言語がいいよ、などということを教えてください(例:CGならC言語←適当) どれか1つでもかまいません。たくさんの回答をお待ちしております☆

  • phpでオブジェクト指向と呼べる設計をするには・・・

    phpで、なるべく同じ処理は関数化し、 ひとつの大きな処理としてまとめています。 これは、オブジェクト指向といえるのでしょうか? オブジェクト指向とはもっと高度で汎用性が高く たんなる関数化ではオブジェクト指向とはいえないでしょうか? 綺麗なオブジェクト指向とは一体のどようなものなのでしょうか? どこまでオブジェクト化すれば オブジェクト指向なのかよく分かりません。 使いまわしがきけばオブジェクト指向なのでしょうか? 他のプログラムに影響を与えなければオブジェクト指向なのでしょうか? 質問が抽象的ですが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPでオブジェクト指向開発してますか?

    実務でPHPでオブジェクト指向開発しているプログラマ(もしくは案件・企業)の割合ってどのくらいのものでしょうか? 当然、外部からPEAR等のクラスをひっぱってきたり、フレームワークを使用することはあると思いますが、設計レベルでオブジェクト指向開発をすることは、どのくらいの割合でありますでしょうか? つまり、interfaceやimplements、abstractといった単語を、仕事で使ったことがあるPHPプログラマはどのくらいいるのでしょうか? それとも、そもそもインターフェースや抽象クラス等は、ライブラリの開発者のためのものであって、一般のプログラマはむしろ使わないほうがいいのでしょうか? 周りに、PHPプログラマを本職でやってる人がいないので、ご意見を伺いたいです。

    • ベストアンサー
    • PHP
  • PHP,privateの使用理由について

    初心者PHPプログラマーです。 質問させて頂きます。 アクセス権に関して、そのクラス内でしか使わないメンバ変数等はprivateで定義した方が良いというのをあちこちのサイトで目にします。 その理由に関してはpublicで指定した場合、値が?書き換えられる可能性があるからということをよく耳にしますが、 この書き換えられるというのはどういうことなのでしょうか? これは [$aaa = 0;]と、定義しているメンバ変数を [$aaa = 3;]と、書き換えられる可能性があるということでしょうか? 現状よく理解出来ていない状態でprivateなどを使い分けています。 初歩的な質問かとは思いますが、ご存知の方がいらっしゃいましたら、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 規模の大きなサイトを作るエレガントな方法

    こんにちは。 最近PHPに凝っています。 確かに便利だし、動作も軽いのですが、少し規模の大きめのサイトを作ろうと思うと、プログラムが汚くなるのが気になります。 クラスを使っていろいろな操作をカプセル化しても、JAVAやC++ほどにエレガントなものにはなりません。 ウェブをつくるうえでのオブジェクト指向的概念をPHPで実現する方法論はないのでしょうか。 JAVAのサーブレットを使うときほど強烈にオブジェクト指向でなくてもいいです。 みなさんはPHPで大きめのサイトを作るときにどのような方針でつくってらっしゃるのでしょうか。

    • ベストアンサー
    • PHP
  • はじめてのPHP

    こんばんはっ! 私はここ数年Javaをやってきましたが、 最近PHPに興味があり、挑戦しようと思っています。 そこでPHPを始める前に、下記について知りたいです。 ・PHPのバージョンについて 今主流なのは、5でしょうか。 また、5はオブジェクト指向になったという話を聞いたことがありますが、Java風にコーディングできるのでしょうか。 ・IDEについて PHPにはJavaでいうEclipseみたいなものはありますか? また、Eclipseでも開発可能ですか? ・Zend Frameworkについて これはJavaでいうStrutsみたいなフレームワークでしょうか? また、PHPにはMVCのような概念はありますか。 ・PHPの動作環境 Apacheが動く環境なら、どこでも動きますか? また、Javaのように一度書けばどこでも動きますか? ・PHPの書籍 おすすめの本はありますか。 どうぞ、よろしくお願いします。

    • ベストアンサー
    • PHP
KVM-NVU4 PC切替器用ACアダプタ
このQ&Aのポイント
  • KVM-NVU4 PC切替器用ACアダプタは既に生産終了品です。
  • 代替品等があれば購入したいのですが、ありませんでしょうか?
  • エレコム株式会社の製品についての質問です。
回答を見る

専門家に質問してみよう