アカウント名:
パスワード:
どんな環境でも、穴があるようにコーディングしたら、セキュアじゃないでしょ。
何やったら問題かを、わかった上でコーディングしないと。
Web上のセキュリティホールって、何をさすのかも問題だし。SQLインジェクションなのか?CSRFなのか?
ただ、PHPの出力がデフォルトでhtmlspecialcharsがかかった状態で出力されるべきである、というのは同意だな。それだけでも(詳しくない人間が当座で書いた)初心者コードがかなり助かったと思う。あと、PDO標準装備であるべきだったと思う・・・PHP登場時は、クラスが無かったら無理か。
magic_quote, magic_quote_gpcってのもあるみたいだけど、評判悪いし。
現状では言語仕様自体がセキュアなんてことはないと思う。
もし、存在するとすればXSSやSQLインジェクションなんか書いたらコンパイルエラーかワーニングで指摘してくれる新世代の言語なんだろう。
ただそれでも環境設定一つで脆弱性は生み出されてしまう。言語だけでセキュアにしようなんていうのはその考えが「脆弱性」セキュリティ教育による「技術者意識の向上」が一番の解決策だろう。
> もし、存在するとすればXSSやSQLインジェクションなんか書いたら> コンパイルエラーかワーニングで指摘してくれる新世代の言語なんだろう。
旧世代の perl4 の時代から、perl には taint モードがありますよ。外部から入力されたデータは「汚染されている」ものとマークされ、変数代入などで汚染が伝播していきます。でもって「危険なオペレーション」に「汚染されたデータ」を入れるとエラーになる。
最大の問題は、デフォルトはオフで、-Tオプションを付けないとtaint mode にならないことですかね。setuid している場合は自動でオンになるので、普通のスクリプト言語として使う分には困らないのですが…
あと、taint mode を使ってると、たまに汚染除去がめんどくさくなって「$a=($a=~/^(.*)$/)[0];」みたいなコードを書いちゃったりして、
> セキュリティ教育による「技術者意識の向上」が一番の解決策だろう。
という意見はその通りだと思う耳が痛い話ですが…
どんな言語でも結局は書き手の技量に依存するわけですね。読みにくいのも、インセキュアなのも、スパゲッティ……なのは、スパゲッティモンスター様の気分次第か。
# XSS対策は本当に難しいです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
言語? (スコア:2)
どんな環境でも、穴があるようにコーディングしたら、セキュアじゃないでしょ。
何やったら問題かを、わかった上でコーディングしないと。
Web上のセキュリティホールって、何をさすのかも問題だし。SQLインジェクションなのか?CSRFなのか?
ただ、PHPの出力がデフォルトでhtmlspecialcharsがかかった状態で出力されるべきである、というのは同意だな。それだけでも(詳しくない人間が当座で書いた)初心者コードがかなり助かったと思う。あと、PDO標準装備であるべきだったと思う・・・PHP登場時は、クラスが無かったら無理か。
magic_quote, magic_quote_gpcってのもあるみたいだけど、評判悪いし。
-- gonta --
"May Macintosh be with you"
Re:言語? (スコア:3, すばらしい洞察)
現状では言語仕様自体がセキュアなんてことはないと思う。
もし、存在するとすればXSSやSQLインジェクションなんか書いたら
コンパイルエラーかワーニングで指摘してくれる新世代の言語なんだろう。
ただそれでも環境設定一つで脆弱性は生み出されてしまう。
言語だけでセキュアにしようなんていうのはその考えが「脆弱性」
セキュリティ教育による「技術者意識の向上」が一番の解決策だろう。
Re:言語? (スコア:1)
> もし、存在するとすればXSSやSQLインジェクションなんか書いたら
> コンパイルエラーかワーニングで指摘してくれる新世代の言語なんだろう。
旧世代の perl4 の時代から、perl には taint モードがありますよ。
外部から入力されたデータは「汚染されている」ものとマークされ、
変数代入などで汚染が伝播していきます。
でもって「危険なオペレーション」に「汚染されたデータ」を入れるとエラーになる。
最大の問題は、デフォルトはオフで、-Tオプションを付けないとtaint mode にならないことですかね。
setuid している場合は自動でオンになるので、普通のスクリプト言語として使う分には困らないのですが…
あと、taint mode を使ってると、たまに汚染除去がめんどくさくなって
「$a=($a=~/^(.*)$/)[0];」みたいなコードを書いちゃったりして、
> セキュリティ教育による「技術者意識の向上」が一番の解決策だろう。
という意見はその通りだと思う耳が痛い話ですが…
Re: (スコア:0)
どんな言語でも結局は書き手の技量に依存するわけですね。
読みにくいのも、インセキュアなのも、スパゲッティ……なのは、スパゲッティモンスター様の気分次第か。
# XSS対策は本当に難しいです。
Re: (スコア:0)
これはこれでhtmlspecialchars()されると危険な状態が作られてしまいそう
発見しにくいうえに原理を理解するのがややこしい