PHPerになって、なんでディスられているか調べた。 [プログラミング]
ぺちぱー(PHPer)になって、なんでこんなにもPHPは評判が悪いのだろうと不思議に思っていたのですが、過去に色々あったようですね。今ではそんなに問題となることも少なくなってはいると思うのですが、お手軽にWebアプリを作れるというノリが口うるさい人の格好の的になっていたのだと思います。
最近やり始めたので歴史的なことは知らないのですが、ここで読む限り黒歴史だらけって感じではありますね。
https://qiita.com/fallout/items/1528e8667d6fb80ffeae
register_globalsとmagic_quotes_gpcのコンボはかなりきついと思います。確かにregister_globalsはSQLインジェクションの脆弱性を超える、標準装備の脆弱性だと思います。まぁ今は廃止されているので、昔のソースを使うのでなければそんなに問題とはならないんじゃないかとは考えられます。昔のソースを直す余裕がないから困ってるところはありそうだけど、外向きのシステムは脆弱性が出てきて手直しというのが必須ですので直すしかないですね。まぁ廃止されてから何年も経っているから、そのままにしているところもないとは思うんだけど。
ただこういう機能ってのは自分だけの機能としては自分で作ってしまうことはありますよね。というか、既存じゃない脆弱性を作り込めるほど書いていること自体は、そこそこできる人ではあるんですが、正直きちんと動いたら脆弱性まで考えるってことは、外向きのシステムじゃなければ考えないところですよね。内部システムだから脆弱性があるのはわかっているけど便利で、対策するのが面倒なのであえてやらないっていうことはあると思います。
あとPHPでWordPressが作られていたことも、色眼鏡で見られる状況を生んだんだと思います。WordPressがPHPで作られていなかったら、ひどい脆弱性が生まれなかったかと言われるとわかりませんが、お手軽な言語体系がそれを助長したということもあると思います。上のリンク先にもちょっとヤバそうな実装があると書いてありましたし。
WordPressを使っている人はある意味勇気があるとされているらしいのですが、中に重要な情報を入れない限りはそんなに目くじらをたてる程でもないかなとは思うんだけどね。とは言え、動的にページを生成している限りは改ざんをしやすいということはあるのかもしれない。今時、固定ページでそれを更新していくなんてことは無理に近いので、他にCMSを見つけるかWordPressを使い続けるかをしないといけないんだろうね。まぁWordPressもかなり使い倒されているから、ノウハウが溜まっていることは確かなんじゃないかと思うので、多少の脆弱性は目を瞑ることにはなるのだろうけど。
上のリンク先にあるけど、
WordPressを使う人はプログラマーでもペチパーでもないと言っているけど、当たり前のことだよね。Apacheを使っていて、httpd.confに準ずる設定ファイルをいじっていてもプログラマーじゃないですもんね。まぁシェルスクリプトを書いている人はプログラマーにかなり近いというか、もう片足プログラマーに足を突っ込んでいるようなものですが。ただ単にテンプレートをテンプレ製造している人は、基本的にPHPerとは言えないんじゃないかと言われれば確かにそうかもしれないですけどね。
結局、言語の問題というよりは、標準ライブラリの作りの問題のような気がします。そこのところは一体として考えていいとは思うんだけど、言語的な素養としても気持ち悪いところはあって、キャストの仕方とかを見ると、バグを意図的に作り込んでいるんじゃないかと思えるほどですよね。他の言語を知っているとちょっと見るに堪えないというのはわかる気はします。
ただ、そういう罠を避けては書けるので、C言語と同じで気をつけて書けば問題ない程度なんだろうと思います。最近の言語はわりとバグを作りこまないような施策が言語的に入れられていたりするので、それを考えるとPHPはちょっと考えられない仕様ではあるのはわかります。
例えば、Swiftのnilとオプショナルの扱いを見ても、バグとなりやすい0とかnilとかの扱いを強いるぐらいで、それを考えればPHPは仕様的には逆行していると言えるでしょう。逆行は言い過ぎにしても、互換性を盾にして問題を放置したままにしているのは確かでしょう。それはC言語とかも同じことなので、仕方ないと言えば仕方ないことなのかもしれません。
過去で動いていたスクリプトが動かなくなるというのは、運用上かなり問題ですからね。実行環境を塩漬けにすればいいだけの話なんですが、それはそれで問題を放置するだけですし。あまりに問題な関数をdeprecatedじゃなくきっぱり廃止にまでしてしまう言語ってのは、設計上問題があるのは確かでしょう。ただPHPは設計云々よりも使いやすさ重視でやってきたというのは、言語ができた経緯から考えると当然なのかもしれないですが、うるさ方から言わせればツッコミどころ満載の言語であるわけです。
でも、あるものを使うという点において、けなし易いからボロクソに言うだけというのは建設的じゃないな。それにその貶した人がPHP代替の素晴らしいスクリプト言語を作ってくれるという訳じゃないんだし。けなすだけなら猿でもできるので、今ある手段をいかに使うかということに力を入れるべきなんじゃないかと。実際、PHP代替の言語はないと思いますし、今から作っても広まるかどうかは微妙なところです。
というか、嫌いな人は黙って使わなければいいんです。Ruby on RailsでもDjangoでも使っていればいいんですよ。僕も選べればそうします。とはいえ、PHPがそこまで嫌いではないので、現状の新しいPHPを使っている限りは問題ないですね。昔のシステムを改修しないといけないとかだと嫌になるかもしれないけど、同じものを一から作り直せとか言われるんなら、Laravelなどを使って作ればいいわけで、システムの再開発をしているだけであって、車輪の再発明ほど面倒なことをしているわけではないわけですし。
またうるさ方がLaravelみたいなSQLも使わないようなライブラリを使っていると、初心者ばかりでライブラリが想定していない使い方ができないとか言い出す人がいるんですが、それはまた別の時に話しましょう。少々長く書きすぎた。
ただ、曲がりなりにも動いているシステムを再開発するってのはモチベーションとしてはあまりいいものではないのは確かではあります。外向けシステムじゃない場合は、内部から攻撃するような奴がいけないんじゃないかと思うんですが、昨今のコンプライアンスからそうも言っていられないらしいですよ。特に外部から人が入る場合は、外向けシステムとそんなに変わらないですから気にしないといけないんでしょうけど。コンピューターシステムってのは面倒なものですね。改めて思います。だからこそ、面白いとも思います。
始めに調べたと書きましたが、大して調べていませんw。
https://qiita.com/gongo/items/91b8728701cbbb41584e
やめるにやめられない事もあったりと、システムを維持するのっていうのは大変なものだなと思ったり。まだ自社で作っていれば、少しずつ直すのもできなくはないのだろうけど、買いっぱなしのシステムとかどうすんのかなと思ってしまう。
基本的にここに書かれているようなことなんですが、
https://note.com/shimakaze_soft/n/n03992e2e8c22
ちょっと他の言語と違うところもムムムとなる原因になっていそう。
https://note.com/shimakaze_soft/n/n6e19f705f757
最近やり始めたので歴史的なことは知らないのですが、ここで読む限り黒歴史だらけって感じではありますね。
https://qiita.com/fallout/items/1528e8667d6fb80ffeae
register_globalsとmagic_quotes_gpcのコンボはかなりきついと思います。確かにregister_globalsはSQLインジェクションの脆弱性を超える、標準装備の脆弱性だと思います。まぁ今は廃止されているので、昔のソースを使うのでなければそんなに問題とはならないんじゃないかとは考えられます。昔のソースを直す余裕がないから困ってるところはありそうだけど、外向きのシステムは脆弱性が出てきて手直しというのが必須ですので直すしかないですね。まぁ廃止されてから何年も経っているから、そのままにしているところもないとは思うんだけど。
ただこういう機能ってのは自分だけの機能としては自分で作ってしまうことはありますよね。というか、既存じゃない脆弱性を作り込めるほど書いていること自体は、そこそこできる人ではあるんですが、正直きちんと動いたら脆弱性まで考えるってことは、外向きのシステムじゃなければ考えないところですよね。内部システムだから脆弱性があるのはわかっているけど便利で、対策するのが面倒なのであえてやらないっていうことはあると思います。
あとPHPでWordPressが作られていたことも、色眼鏡で見られる状況を生んだんだと思います。WordPressがPHPで作られていなかったら、ひどい脆弱性が生まれなかったかと言われるとわかりませんが、お手軽な言語体系がそれを助長したということもあると思います。上のリンク先にもちょっとヤバそうな実装があると書いてありましたし。
WordPressを使っている人はある意味勇気があるとされているらしいのですが、中に重要な情報を入れない限りはそんなに目くじらをたてる程でもないかなとは思うんだけどね。とは言え、動的にページを生成している限りは改ざんをしやすいということはあるのかもしれない。今時、固定ページでそれを更新していくなんてことは無理に近いので、他にCMSを見つけるかWordPressを使い続けるかをしないといけないんだろうね。まぁWordPressもかなり使い倒されているから、ノウハウが溜まっていることは確かなんじゃないかと思うので、多少の脆弱性は目を瞑ることにはなるのだろうけど。
上のリンク先にあるけど、
ただ、WordPressしか触らない人(ほとんどコードを書かない人)は、プログラマでもなければPHPerでもありませんので、そのあたりは混同したらダメかなと思います。
WordPressを使う人はプログラマーでもペチパーでもないと言っているけど、当たり前のことだよね。Apacheを使っていて、httpd.confに準ずる設定ファイルをいじっていてもプログラマーじゃないですもんね。まぁシェルスクリプトを書いている人はプログラマーにかなり近いというか、もう片足プログラマーに足を突っ込んでいるようなものですが。ただ単にテンプレートをテンプレ製造している人は、基本的にPHPerとは言えないんじゃないかと言われれば確かにそうかもしれないですけどね。
結局、言語の問題というよりは、標準ライブラリの作りの問題のような気がします。そこのところは一体として考えていいとは思うんだけど、言語的な素養としても気持ち悪いところはあって、キャストの仕方とかを見ると、バグを意図的に作り込んでいるんじゃないかと思えるほどですよね。他の言語を知っているとちょっと見るに堪えないというのはわかる気はします。
ただ、そういう罠を避けては書けるので、C言語と同じで気をつけて書けば問題ない程度なんだろうと思います。最近の言語はわりとバグを作りこまないような施策が言語的に入れられていたりするので、それを考えるとPHPはちょっと考えられない仕様ではあるのはわかります。
例えば、Swiftのnilとオプショナルの扱いを見ても、バグとなりやすい0とかnilとかの扱いを強いるぐらいで、それを考えればPHPは仕様的には逆行していると言えるでしょう。逆行は言い過ぎにしても、互換性を盾にして問題を放置したままにしているのは確かでしょう。それはC言語とかも同じことなので、仕方ないと言えば仕方ないことなのかもしれません。
過去で動いていたスクリプトが動かなくなるというのは、運用上かなり問題ですからね。実行環境を塩漬けにすればいいだけの話なんですが、それはそれで問題を放置するだけですし。あまりに問題な関数をdeprecatedじゃなくきっぱり廃止にまでしてしまう言語ってのは、設計上問題があるのは確かでしょう。ただPHPは設計云々よりも使いやすさ重視でやってきたというのは、言語ができた経緯から考えると当然なのかもしれないですが、うるさ方から言わせればツッコミどころ満載の言語であるわけです。
でも、あるものを使うという点において、けなし易いからボロクソに言うだけというのは建設的じゃないな。それにその貶した人がPHP代替の素晴らしいスクリプト言語を作ってくれるという訳じゃないんだし。けなすだけなら猿でもできるので、今ある手段をいかに使うかということに力を入れるべきなんじゃないかと。実際、PHP代替の言語はないと思いますし、今から作っても広まるかどうかは微妙なところです。
というか、嫌いな人は黙って使わなければいいんです。Ruby on RailsでもDjangoでも使っていればいいんですよ。僕も選べればそうします。とはいえ、PHPがそこまで嫌いではないので、現状の新しいPHPを使っている限りは問題ないですね。昔のシステムを改修しないといけないとかだと嫌になるかもしれないけど、同じものを一から作り直せとか言われるんなら、Laravelなどを使って作ればいいわけで、システムの再開発をしているだけであって、車輪の再発明ほど面倒なことをしているわけではないわけですし。
またうるさ方がLaravelみたいなSQLも使わないようなライブラリを使っていると、初心者ばかりでライブラリが想定していない使い方ができないとか言い出す人がいるんですが、それはまた別の時に話しましょう。少々長く書きすぎた。
ただ、曲がりなりにも動いているシステムを再開発するってのはモチベーションとしてはあまりいいものではないのは確かではあります。外向けシステムじゃない場合は、内部から攻撃するような奴がいけないんじゃないかと思うんですが、昨今のコンプライアンスからそうも言っていられないらしいですよ。特に外部から人が入る場合は、外向けシステムとそんなに変わらないですから気にしないといけないんでしょうけど。コンピューターシステムってのは面倒なものですね。改めて思います。だからこそ、面白いとも思います。
始めに調べたと書きましたが、大して調べていませんw。
https://qiita.com/gongo/items/91b8728701cbbb41584e
やめるにやめられない事もあったりと、システムを維持するのっていうのは大変なものだなと思ったり。まだ自社で作っていれば、少しずつ直すのもできなくはないのだろうけど、買いっぱなしのシステムとかどうすんのかなと思ってしまう。
基本的にここに書かれているようなことなんですが、
https://note.com/shimakaze_soft/n/n03992e2e8c22
ちょっと他の言語と違うところもムムムとなる原因になっていそう。
https://note.com/shimakaze_soft/n/n6e19f705f757
タグ:PHP
Twitterまとめ投稿 2020/01/17 [Twitter]
carbonhydrat『今時、車は買わないよなぁ。』とうふめんたらー絶賛頻尿中|https://t.co/wc45NCBUXp01/16 07:10 carbonhydratRT @tekina_osamu: 「民主党に騙されたー。だから安倍支持ー」みたいなやつは、自分が簡単に騙されるバカであることをなぜ自覚しないんだろう? 「自分は判断能力が欠如しているがゆえに騙されたのだから、今信じているもの(安倍)にも騙される可能性がある」と考えるのが正常な…01/16 08:52 carbonhydratRT @sibakendona: 「誤解が生じているのなら、お詫びのうえ訂正」同様な言葉を何度聞いたか、特に政治家から、麻生からは何度も聞きました。「口に出したら戻せない」を全く持っていないようです。フェイクは当たり前、差別も当たり前、バレたり都合が悪くなれば訂正して謝ればいい…01/16 14:00 carbonhydratRT @49sick89hack: 「朝ごはんを食べる子は頭が良くなる」←「朝食を取る余裕のある裕福な家庭が学力でも有利なだけでした……」 「東大生には音楽を習っていた子が多い」←「音楽を習わせられる裕福な家庭が学力でも有利なだけでした……」 教育関連の統計は大体こんなオチ…01/16 19:08 carbonhydratRT @Khovtoliv: >日本人の平均寿命って、これからさがていくと思うんだよな。だって、新卒からずっと非正規で、妻子もおらず毎日ストロングゼロ飲んで、少子化で頼れる親兄弟もいない 社会主義経済失敗の貴重な教訓の一つが「給料をカットすると平均寿命が下がる」だからな。末期…01/16 19:08 carbonhydratRT @wildriverpeace: ちょっと遊びで作ってみた都道府県別衰退指数。人口の増減だけではわからないので就業人口増減との差分で、人口が減っている以上に就業人口が減っているところが本当にやべえ所じゃないかと仮定して作ってみた。2018-1997年比較。結果、群馬と香川…01/16 19:10
2020-01-17 05:01
コメント(0)