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

    私的良スレ書庫

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

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

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - bind + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    201 : nobodyさん - 2009/02/21(土) 13:36:24 ID:??? (-24,-29,-290)
    >191
    会員制の課金の発生する、バックエンドでCSVとTSVでレポートを吐くwebアプリを仕事で書いてるが、
    ・DBに渡す際にPDOのプレースホルダで渡す、あるいはmysql_real_escape_stringなどでクエリを構成する
    ・画面表示する際にはビューに渡す時点で原則全ての値をhtmlspecialcharsでエスケープ
     (タグを書き出さないといけない箇所や、HTML以外の箇所などの例外は慎重に検討したうえでエスケープせず渡す)
    ・DBには、例えばフォームからの入力なら入力値がそのままの形で格納される
    このルールが一番分かりやすいし、安全だし、汎用性がある。

    出力部で「この文字列はDBから来た値だからhtmlspecialcharsは不要、こっちはクライアントからの入力値だから必須…」とかやってると、絶対変換ミスが発生する。
    何も考えずルールにさえ従ってさえいれば脆弱性が発生しない事をシステムが担保してくれる形にするのが一番安全なんだよ。
    俺はMySQLでの危険文字を全て列挙すら出来ない低能だし、職場には俺以下の屑が溢れているが、このルールに従う限り絶対安全だとシステム側で保障できるコードを組める。
    202 : nobodyさん - 2009/02/21(土) 13:41:28 ID:??? (+24,+29,-5)
    >>198
    してるわけないだろ。関数の使いどころすらわかってないんだから
    203 : nobodyさん - 2009/02/21(土) 13:41:54 ID:??? (+3,+10,-22)
    >>201
    それでOKなんだけど、>>191はフィルターやバリデーターとDB登録時のエスケープを混同してるらしいからw
    205 : nobodyさん - 2009/02/21(土) 14:14:16 ID:??? (-26,+29,-4)
    >>193
    雑談はネタ不足気味な雑談スレで。
    http://pc11.2ch.net/test/read.cgi/php/1200314111/
    206 : nobodyさん - 2009/02/21(土) 14:20:49 ID:??? (+35,+30,-170)
    >>198
    ああ。実際に>>201が書いているようなことはしているよ。
    例として>>185みたいな簡単な1行ソース出したから
    「こいつ何も知らない馬鹿だなwww」と煽りたい気持ちも分かる。
    だが、1から10までここに書けないだろ。

    入力時、出力時にそれぞれ適切に変換するのは、初歩中の初歩だと思う。
    201がああだこうだ書いてるが、俺は自作クラス作ってDB処理をしているから
    変換ミスがどうのこうのはない。

    ま、そういう自分の事はどうでも良くて、>>185の意見を出しただけなんだが
    なぜか俺自身を煽りたい馬鹿がいるな。そんな事しても無駄だろ
    207 : nobodyさん - 2009/02/21(土) 14:22:00 ID:??? (+20,+29,-5)
    >>185みたいなコードが出てくる時点でお前が一番馬鹿だよ
    208 : nobodyさん - 2009/02/21(土) 14:26:20 ID:??? (-18,-29,-32)
    >>207
    >だが、1から10までここに書けないだろ。

    ちゃんと読めよ・・・わかりやすいように簡単に書いたって言ってるだろ

    それに、htmlspecialcharsで変換しないでそのまま格納したとする
    その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?
    209 : nobodyさん - 2009/02/21(土) 14:27:37 ID:??? (+30,+29,-6)
    >>208
    こんだけ書かれてまだわかんないのか。
    そこでhtmlspecialcharsはおかしいってことだろ。
    代わりに何を使うべきか考えてみろ
    210 : nobodyさん - 2009/02/21(土) 14:28:10 ID:??? (+31,+29,-2)
    >>206
    荒れるだけだから黙っててくれ。
    211 : nobodyさん - 2009/02/21(土) 14:28:10 ID:??? (+24,+29,-14)
    >>185>>191みたいなこと書いてたら馬鹿にされるのあたりまえだろ
    >>206が仕事ではなく趣味でPHPいじってるだけであることを祈る
    213 : nobodyさん - 2009/02/21(土) 14:28:48 ID:??? (+28,+29,-17)
    >>209
    わかる・わかんないの、俺に対しての批判はどうでも良いんだよ。
    「なぜhtmlspecialcharsは駄目なんだ」って事だ

    214 : nobodyさん - 2009/02/21(土) 14:29:08 ID:??? (+14,+19,-13)
    >>208
    phpMyAdminをなめてんの?
    別にスクリプトが混入したって何もおきないよ。
    もし、そこでスクリプトインジェクションされんならIPA行きだお
    215 : nobodyさん - 2009/02/21(土) 14:30:21 ID:??? (-28,-29,-5)
    >>213
    > 「なぜhtmlspecialcharsは駄目なんだ」
    既出
    216 : nobodyさん - 2009/02/21(土) 14:30:27 ID:??? (+25,+29,-27)
    お前ら、自分の視野で物事考えすぎだよ。

    「phpMyAdminなんて使ってるの?」って言葉がここで出てくると思わなかったぜw
    ここのスレの役割考えろや。どうせ個人叩きしかできないくせに。
    217 : nobodyさん - 2009/02/21(土) 14:30:31 ID:??? (-10,-6,-7)
    >>208
    全部わかったうえで一部分だけ簡単に書いてます、って言ってるやつの文章じゃないよそれ
    結局DB格納時にhtmlspecialchars使ってるんじゃん
    218 : nobodyさん - 2009/02/21(土) 14:31:22 ID:??? (-28,-29,-9)
    >>216
    phpMyAdmin → 画面出力時のお話

    SQLインジェクションからかけ離れてきました・・・
    219 : nobodyさん - 2009/02/21(土) 14:32:07 ID:??? (+35,+29,-32)
    >>206
    > 俺は自作クラス作ってDB処理をしているから変換ミスがどうのこうのはない。
    変換とか言ってる段階で、その自作クラスが穴だらけに1000カノッサ
    220 : nobodyさん - 2009/02/21(土) 14:36:47 ID:??? (-26,-29,-27)
    > それに、htmlspecialcharsで変換しないでそのまま格納したとする
    > その場合、phpMyAdminなどで管理する時。どうなるかわかるよな?

    phpMyAdminは出力時サニタイズをすっかり忘れてる、ってこと?
    221 : nobodyさん - 2009/02/21(土) 14:38:07 ID:??? (+22,+29,-4)
    サニタイズってトイレにでも行く気?
    223 : nobodyさん - 2009/02/21(土) 14:40:08 ID:??? (+22,+29,-4)
    おまえらとどめは刺さないよなww
    224 : nobodyさん - 2009/02/21(土) 14:40:18 ID:??? (+28,+29,-20)
    >>219
    >>201が「俺はMySQLでの危険文字を全て列挙すら出来ない低能」と
    言ってる意味を理解できていない、に1000カノッサ上乗せ
    225 : nobodyさん - 2009/02/21(土) 14:46:08 ID:??? (-4,+1,+0)
    >>185
    語る以前にエラーになる件
    226 : nobodyさん - 2009/02/21(土) 15:07:41 ID:??? (+20,+27,-6)
    ↓アクセスするとGoogleに飛ぶんですがどういう仕組みですか?
    http://www.yahoo.xxco.jp/
    227 : nobodyさん - 2009/02/21(土) 15:11:56 ID:??? (-26,-29,-80)
    %はあんまり伝わらなかったみたいだなー。
    SQLとHTMLでは、特殊な扱いになる文字が違うよってことだけど。

    htmlspecialchar()でも問題なく見えるのは、たまたま、だと思ったほうがいいよ。
    偶然にも、置き換え対象になる文字がSQLでエスケープが必要な文字と同じだったってこと。

    ついでに言えば、エスケープの仕方は実際はDB依存だから
    addslashes()じゃなく、DB専用の関数を使ったほうがいい。
    229 : nobodyさん - 2009/02/21(土) 15:18:48 ID:??? (-23,-30,-163)
    >>226
    GET / HTTP/1.1
    Host: www.yahoo.xxco.jp
    (略)

    HTTP/1.x 302 Found
    Date: Sat, 21 Feb 2009 06:15:31 GMT
    Server: Apache/2.2.9 (Fedora)
    X-Powered-By: PHP/5.2.6
    Location:http://www.google.co.jp/
    Content-Length: 0
    Connection: close
    Content-Type: text/html; charset=UTF-8
    230 : nobodyさん - 2009/02/21(土) 16:10:53 ID:??? (+27,+29,-12)
    素人だけど、俺より酷いプロらしき人が入るのを見て安心したような不安になったような…
    233 : nobodyさん - 2009/02/21(土) 16:35:25 ID:??? (+27,+29,-34)
    べ・・・別に!
    僕レンタルサーバー使ってるからね!
    エスケープしなくても安全よっ!
    234 : nobodyさん - 2009/02/21(土) 19:59:23 ID:230PJjNE (-15,-30,-248)
    【OS名】MacOS X (MAMP)
    【PHPのバージョン】php5.2.5
    【連携ソフトウェア】mysql
    【質問内容】
    Webアプリケーションで、ウィンドウ毎に違う情報を引き継いで処理をしていく物を作っています。
    uniqid()でセッションIDを割り振って、formのhiddenに入れると引き継げるのは分かりました。
    しかしこれだと、link(aタグ)で機能を選択した場合に、セッションIDが引き継げないように
    思います。ですよね??何か良い方法はありませんか?
    リンクのパラメータに追加するとなると、全部のリンクに書き足す必要があって大変だし、
    POSTとGETの両方の評価が必要になると煩雑だし、そもそもurlにセッションIDを出すのが
    微妙に避けたいので・・・。
    お知恵を拝借したいです。よろしくお願いいたします。
    237 : nobodyさん - 2009/02/21(土) 20:17:25 ID:??? (+13,+29,+0)
    >>235
    出したんなら良かったな
    238 : nobodyさん - 2009/02/21(土) 20:21:23 ID:??? (-27,-30,-142)
    モバゲーで鳴らした俺はこの程度の日本語崩壊くらいなんて事は無い
    モバゲーではこの程度の言語障害者珍しくも無い
    マジ日本はどこへ向かうんだ

    $numbers = range(1, 20);
    shuffle($numbers);

    echo array_pop($number);
    // なんか処理
    echo array_pop($number);
    // なんか処理
    echo array_pop($number);

    1ページ内の処理ならこれでいける。
    2枚以上の画面にわたって変数を持って行きたいならセッションを使うしかない。
    241 : 234 - 2009/02/21(土) 20:51:05 ID:??? (-13,-4,-19)
    >>240
    同一セッションでは困るんですが・・・ウィンドウ毎に分けたいので・・・
    242 : nobodyさん - 2009/02/21(土) 20:54:07 ID:??? (-16,-22,-40)
    >>241
    であればウインドウごとにID発行してそれをセッションで持ちまわす
    243 : 242 - 2009/02/21(土) 20:58:18 ID:??? (+29,+29,-46)
    ごめん、うそついた
    同一セッションで別ID発行してもセッションが上書きされるだけだからダメか
    244 : nobodyさん - 2009/02/21(土) 20:59:36 ID:??? (-14,-30,+0)
    入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
    で質問。
    入力->フィルター->エスケープ->DB -> 取り出し->
    ここまではわかるが。
    その後なんでまたフィルタにかけるの?
    while文でたとえば
    <? while ( $item = mysql_fetch_array( $result ) ) { ?>
    <tr>
    <td><?= $item['item_id'] ?><?= $item['item_id2'] ?></td>
    <td><?= $item['item_name'] ?></td>
    <td><?= $item['author_name'] ?></td>
    <td><?= $item['publisher_name'] ?></td>
    <td><?= date( 'Y年m月d日', strtotime( $item['release_date'] ) ) ?></td>
    <td><?= $item['list_price'] ?></td>
    <td><?= $item['sale_price'] ?></td>
    <td><?= get_category_name( $link, $item['category_id'] ) ?></td>
    <td><?= $item['quantity'] ?></td>
    <td><?= $item['state'] ?></td>
    <td>
    <nobr>[<a href="admin_edit_item.php?item_id=<?= $item['item_id'] ?>">編集</a>]</nobr>
    <nobr>[<a href="admin_del_item1.php?item_id=<?= $item['item_id'] ?>" onClick="return confirm( '完全に削除されます。よろしいですか?' )">削除</a>]</nobr>
    </td>
    <? $n ++; } ?>
    でまわしてはいかんのかね?
    245 : nobodyさん - 2009/02/21(土) 21:09:52 ID:??? (+25,+29,-46)
    >>244
    俺も取り出しのあとのフィルターってのはよくわからん
    DBには正しいものが入ってるはずだしな
    でもhtml適合化は必要だろ。そのコードだとScript実行されるよ
    246 : 234 - 2009/02/21(土) 21:10:06 ID:??? (+14,+12,-27)
    >>243
    そうなんです。>234の様にformかurlに入れれば、
    とりあえずウィンドウ毎に別の情報を引き継げます。
    だけど、formとurlの両立が難しい。
    何か、簡単にウィンドウ毎を識別する方法があれば・・・
    248 : nobodyさん - 2009/02/21(土) 21:17:49 ID:??? (-27,-30,+0)
    >234
    まったく同一のページを2ウィンドウ開くのならば、URLかPOST値にセッション情報を含めないとダメだな。
    手を抜くならセッションキーGET渡しで
    ・Smarty使ってるならポストフィルタで全サイト内リンクにセッションキーを追加する
    ・JavaScript経由で全リンクをセッションキー付きに書き換える
    辺りか。

    リンクを書き換えないなら、複数ウィンドウシステムに入った時点で
    index.php/hogehoge/
    index.php/fugafuga/
    のような固有URLを割り振り、これをセッションキーにするのも手。
    index.php/hogehoge/menu から <a href="./information">で
    index.php/hogehoge/information に遷移させられるから記述が多少楽になる。
    ただし、セッション情報がリクエストヘッダでだだ漏れだし、外部リンクに気を払う必要も出てくる(REFERERで漏れる)。
    249 : nobodyさん - 2009/02/21(土) 21:20:12 ID:??? (-22,-30,-63)
    >>244
    >入力->フィルター->エスケープ->DB -> 取り出し-> フィルター -> html適合化 -> 表示
    どこにそんなことが書いてある?

    入力 -> エスケープ -> DB -> 取り出し -> サニタイズ -> 表示
    これでいい
    250 : nobodyさん - 2009/02/21(土) 21:26:33 ID:??? (+26,+29,-29)
    >>249
    サニタイズってのは、入力値に不正な値や壊れた文字列が入っていないかをチェックするもの。
    やるなら、入力の直後だが、サニタイズって言うと、>>249みたいな誤解をするやつがいるから、
    入力後にやるのが、バリデート+フィルター。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - bind + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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