のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:126,339,316人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ【PHP】下らねぇ質問はID出して書き込みやがれ 86

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    151 : nobodyさん - 2009/08/04(火) 14:22:45 ID:??? (+96,+29,-145)
    「違和感」を感じるかは、
    セキュリティを重視するか、
    セキュリティを軽視したコードを書くかの主観の問題。
    セキュリティを重視すれば違和感を感じない。

    毎月のようにある Web アプリの XSS 脆弱性は、
    まったくエスケープしていないのではなく、
    出力時にエスケープしているため。
    152 : nobodyさん - 2009/08/04(火) 14:28:59 ID:??? (+75,+28,-14)
    自分はフレームワークでも >>142 みたいのを入れてるよ
    153 : nobodyさん - 2009/08/04(火) 14:30:21 ID:??? (-1,-29,-6)
    echo何度も実行するより$echo .= ~みたいにつなげていって最後に出すのが速度的にもいいね。
    154 : nobodyさん - 2009/08/04(火) 14:32:41 ID:??? (+0,-28,-18)
    $_GET全てに無条件でエスケープは無いな
    受け取ったデータ全てが画面表示されるわけでもないし
    155 : nobodyさん - 2009/08/04(火) 14:44:12 ID:??? (+49,+21,-13)
    XSS 脆弱性を出す人はみんなそう言うんだよ
    156 : nobodyさん - 2009/08/04(火) 14:44:17 ID:??? (-1,-29,-15)
    URLの長さの上限はIEで2100バイト、Apacheで8190バイトだし変換コストでの問題は無いと思う
    157 : nobodyさん - 2009/08/04(火) 14:45:13 ID:??? (+70,+29,-60)
    >>151
    出力時にエスケープしているのにXSS 脆弱性があるってのはどういう状況?
    できれば解説お願いします。

    単に「うっかりミスが出やすい」という話?
    158 : nobodyさん - 2009/08/04(火) 14:46:58 ID:??? (+62,+29,-93)
    セキュリティ云々じゃなくて単純に変なだけでしょ
    とにかく$_GET $_POSTは有無をいわさずエスケープっておかしいよ
    入力値はまずチェック(バリデーション)からはいるでしょ?
    わざわざエスケープ済みのデータを基準にしてチェックするわけ?
    入力時エスケープにするとしてもタイミングが悪いよね?
    やるとしてもデータ格納直前にやるべきでない?
    159 : nobodyさん - 2009/08/04(火) 14:51:53 ID:??? (-1,-29,-24)
    htmlspecialcharsは表示直前
    エスケープはDBに入れる直前が基本だろ
    160 : nobodyさん - 2009/08/04(火) 14:52:01 ID:??? (+57,+29,-37)
    ううむ・・・
    色々調べてみたけど
    入力時エスケープによって脆弱性が生まれると主張する人も結構いるね
    161 : nobodyさん - 2009/08/04(火) 14:52:57 ID:??? (+8,-29,-10)
    htmlspecialcharsは表示直前
    DBに入れるのは受け取った生のデータが基本だろ
    162 : 161 - 2009/08/04(火) 14:53:50 ID:??? (+55,+27,-15)
    もちろんSQLインジェクション用のエスケープはするよ
    163 : nobodyさん - 2009/08/04(火) 14:55:46 ID:??? (+57,+29,-5)
    たぶんうっかりミスで過去にひどい目にあったんだろ。
    164 : nobodyさん - 2009/08/04(火) 14:56:27 ID:??? (+62,+29,-64)
    「htmlspecialcharsは表示直前」だと「うっかり」忘れる。
    世の Web アプリの XSS 脆弱性のほとんどはこの「うっかり」。
    だから、最初の段階でエスケープ。

    従来のソフトウェア工学的には変かもしれないけれど、
    人間工学的には必要。
    165 : nobodyさん - 2009/08/04(火) 14:57:20 ID:??? (+76,+25,-6)
    議論がループしている。
    >>142- から再読を。
    166 : nobodyさん - 2009/08/04(火) 14:59:28 ID:??? (+57,+29,-15)
    ただの個人の主張をさも学問ぶるとか。。
    167 : nobodyさん - 2009/08/04(火) 15:04:57 ID:??? (+39,-30,-60)
    うっかりミスというかルール作りすればそんなのおきないでしょ
    たとえば文字列出力時は

    function es($str) {
     echo htmlspecialchars($str, ENT_QUOTES);
    }
    es("<strong>ほげー</strong>");
    っていう風にやるとか

    voidにしたけどStringにして
    echo es("<strong>ほげー</strong>");
    にするとか

    必ず何かを通すようにルール作りしとけばよい
    168 : nobodyさん - 2009/08/04(火) 15:10:01 ID:??? (+1,-26,-36)
    うっかりDBパスワードをechoしてしまうかもしれないからDBは使用厳禁ってか?
    169 : nobodyさん - 2009/08/04(火) 15:11:02 ID:??? (+79,+30,-74)
    >>167
    たぶんそのルールを忘れるって事だと思うぞ。
    議論は平行線のままだろうな。

    厳密なコーディング規約を作れば良い
    →ルールを守らない奴がでてくる

    しっかりテストすれば良い
    →テストに抜けがあるかもしれない

    こういう事だろ?
    170 : nobodyさん - 2009/08/04(火) 15:14:27 ID:??? (+22,-16,-1)
    >>169
    コードレビューとかしないの?
    171 : nobodyさん - 2009/08/04(火) 15:16:50 ID:??? (+57,+29,-31)
    「必ず何かを通すようにルール」や
    「コードレビュー」によって 100% 見落としがなくなりますか?
    172 : nobodyさん - 2009/08/04(火) 15:27:26 ID:??? (+94,+29,-17)
    じゃ最初の段階でエスケープするのは絶対忘れないの?
    173 : nobodyさん - 2009/08/04(火) 15:32:53 ID:??? (+112,+30,-72)
    >>172
    子供じゃないんだから…。

    「一か所に入れるだけ」というルールは守られやすいし、
    コードレビューでも一か所を見るだけだから
    見落としの可能性は極めて低いでしょう?

    その逆に、表示直前だと、ページ数が数百、
    出力箇所が数千ある場合、
    見落とす確率が非常に高くなるよね。
    そして、それこそが Web アプリの脆弱性なんですよ。
    174 : nobodyさん - 2009/08/04(火) 15:48:12 ID:??? (+57,+29,-15)
    規模が大きいとエスケープの確認するだけで数時間いるかもね
    175 : nobodyさん - 2009/08/04(火) 15:54:07 ID:??? (+57,+29,-9)
    その数時間を 20 回、100 回と繰り返せば、確実に見落とすから。
    176 : nobodyさん - 2009/08/04(火) 17:25:09 ID:??? (+59,+28,-2)
    設計がヘボいからそういう考えに陥る
    177 : nobodyさん - 2009/08/04(火) 17:38:56 ID:??? (+14,-16,-1)
    >>176
    ヘボくない設計って?
    178 : nobodyさん - 2009/08/04(火) 19:47:41 ID:??? (+54,-30,-104)
    ウェブアプリの脆弱性君
    お前のアプリケーションは入力データをそのまま出力するだけなのか
    信頼しないデータは入力されたものだけなのか
    次のスクリプトを読んで>>142が無価値なものだと気付こうぜ

    <?php $uri = $_GET['uri']; $filename = apache_lookup_uri($uri)->filename; ?>
    URI <?php echo $uri; ?> に対するファイル名は <?php echo $filename; ?> です。

    例外処理は本質じゃないので省いてあります
    179 : nobodyさん - 2009/08/04(火) 21:48:45 ID:??? (+77,+30,-88)
    >>173
    >その逆に、表示直前だと、ページ数が数百、
    >出力箇所が数千ある場合、
    >見落とす確率が非常に高くなるよね。

    普通はMVCのビューに変数を渡す時、またはビューが変数を出力
    する時に一括してエンティティ化や文字コード変換などの出力処理
    をかけるんだよ。
    カプセル化して出力には必ずビュークラスを通すようにしておけば
    目視で全部確認するなんて前時代の方法はいらない。

    >子供じゃないんだから…。

    100%とか言い出したのはそっちだろ?
    本題に自信がないのか知らんけど煽りで煙に巻くのはやめてほしいね。
    180 : nobodyさん - 2009/08/04(火) 22:00:34 ID:??? (+156,+29,-38)
    たまに>>142みたいなの湧くけど
    HTML以外への出力、例えばメールとかPDFとかに乗っける場合は
    わざわざ元に戻すのかな?
    181 : nobodyさん - 2009/08/04(火) 22:01:05 ID:??? (+57,+29,-17)
    マクロ用意しとけばうっかりなんておきねえよ
    182 : nobodyさん - 2009/08/04(火) 22:02:32 ID:??? (+50,+15,-12)
    >>178
    これの実行結果はどうなるの
    183 : nobodyさん - 2009/08/04(火) 22:33:37 ID:??? (+72,+28,-32)
    >>180
    まあ、そうだろうな。

    意外と、メールはすべてHTMLメールで、
    PDF出力はHTML2PDF的なものを使う、
    とかかも知れんけど。
    185 : nobodyさん - 2009/08/05(水) 00:09:11 ID:??? (+57,+29,-31)
    俺はその手のはテーブル構造を書いたArrayをまわすようにしてる。

    でも、値によって保存方法のルールが複雑なら、別に愚直に長く
    書いてもいいと思うぜ。
    187 : nobodyさん - 2009/08/05(水) 01:18:57 ID:??? (+3,-19,+0)
    SQLスレでやれ
    188 : nobodyさん - 2009/08/05(水) 01:19:46 ID:??? (+22,-29,-17)
    >>186
    where 1は全件検索
    そのSQLだと
    select * from 物件表 where 1 or 市町村id=1
    とかになるから結局全件表示されちゃうんじゃね?
    見直したほうがいいよ
    191 : nobodyさん - 2009/08/05(水) 02:37:48 ID:??? (-17,-29,-20)
    ajaxとグラフを表示させるjavascriptライブラリ
    動的に更新するには難しいかも
    http://www.html5.jp/library/graph_line.html
    192 : nobodyさん - 2009/08/05(水) 06:10:53 ID:??? (-6,-29,-32)
    >>189
    select * from 物件表 where 市町村id=1 or 市町村id=2 or 市町村id=3
    なんてのを想定してるんだろ?
    そのままの意味じゃねえか
    この意味がわからないならSQLの勉強しろとしかいいようがない
    193 : nobodyさん - 2009/08/05(水) 07:54:39 ID:??? (-8,-26,+1)
    test
    194 : nobodyさん - 2009/08/05(水) 09:33:01 ID:??? (-24,-29,-50)
    >>190
    jpgraphでグラフを描けるのであれば、後はページの一部をjavascriptで定期更新するだけ。

    ajax timerで検索してみると良いかも。
    後はjavascriptのスレで質問してくれ。
    195 : 119 - 2009/08/05(水) 10:52:28 ID:??? (+60,+29,-5)
    >>188
    ぼけてた・・・andじゃなくてorだもんな。

    みなさん、間違った回答をしてしまいすみませんでした。
    196 : nobodyさん - 2009/08/05(水) 11:02:59 ID:??? (+83,+29,-165)
    >>180
    そう。戻す。

    HTML 出力時に「わざわざ」直前にエスケープして
    それを忘れて XSS 脆弱性を出すように、
    メールや PDF の「わざわざ」直前にデエスケープして
    それを忘れて脆弱性じゃないバグの方を選択する。

    それに、HTML より、メール、PDF の方が出力箇所が圧倒的に少ないから。

    だから脆弱性を重視するかどうかなんだって。
    197 : nobodyさん - 2009/08/05(水) 11:15:13 ID:4RYOgnxK (-15,+29,-64)
    PHP4年使ってきたけど、未だにPECLがわかりません。
    なので今日しっかり理解しようと思います。

    PECLはどういった位置づけなのでしょうか。
    以前まで、PEARのようなライブラリと思っていたのですが、
    最近はdllのようなモジュールとしての扱いかなと思ってきました。

    それで正しいのでしょうか。
    198 : nobodyさん - 2009/08/05(水) 11:34:24 ID:??? (+57,+29,-13)
    標準機能じゃ満足にできないことをやるためのもの

    ペイントじゃうまくできないからPhotoshopいれたり
    CADやりたいけど標準じゃないから新しく入れたりみたい
    199 : nobodyさん - 2009/08/05(水) 11:38:00 ID:8EYjxJv2 (-7,-30,-107)
    $query = "select * from 物件表 where";
    foreach ($_POST['town_cd'] as $key => $val) {
     if ($key == 0) {
      $query .= " 市町村id={$val}";
      continue;
     }
     $query .= " or 市町村id={$val}";
    }
    では市町村idが多い場合、orも増えるということ?
    200 : nobodyさん - 2009/08/05(水) 11:43:52 ID:??? (+52,+29,-19)
    >>199
    なぜ自分で試してみないんだ?
    試した上で疑問点を質問しなさい。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について