PHP質問・雑談スレ【初心者お断り(ROM歓迎)】©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん 転載ダメ©2ch.net
2016/04/22(金) 08:58:11.47ID:???初心者お断り(ROM歓迎)と書いてますが、初心者用のスレが用意されているからで、
難しい質問や話題をしなければいけないわけではありません。
PHPマニュアルの読み方を概ね理解していて、関数リファレンスが正しく読める方用のスレです。
PHP未導入の方や、手取り足取りが必要な初心者の方はくだスレへどうぞ。
【PHP】下らねぇ質問はここに書き込みやがれ 4
http://echo.2ch.net/test/read.cgi/tech/1457792733/
その他リンク
・PHPマニュアル
https://secure.php.net/manual/ja/index.php
・コードテスト・貼り付け用
http://ideone.com/
・プログラミングのお題スレ Part8 (求PHPer参戦)
http://echo.2ch.net/test/read.cgi/tech/1444216746/
このスレで扱う話題
・PHPのコード,設定や設定値に関する質問
・常識的範囲内でのコードレビュー依頼・改良相談
・PECL,PEARに関する質問
・PHP新機能やPHP関連トレンドの話題
(FWや非公式ライブラリの話題や特徴比較は良いが使い方から先の話題は専スレへ)
・PHPのバグ発見報告・公式に報告する前の検証依頼
このスレで扱わない話題
・直接関係ない○○特有の質問(専スレへ)
(HH,エディタ,IDE,サーバ,OS,DB,SQL,FW,テンプレート,非公式ライブラリ・アプリケーション等)
・PHPの改造
0697nobodyさん
2016/10/05(水) 11:36:08.06ID:???目的は上司や親世代と繋がって発言がしにくくなることだから今後3〜10年の幅で選択制にしようと考えている
あと掲示板じゃなくてSNSだからタイムラインやメッセージ機能は実装した
環境はPHP5.6でLAMP、Smartyは重くなるので使用しないで自作の簡単なテンプレートエンジンを作った
フレームワークもオープン系は未使用で自作フレームワークみたいの作って使ってる
デザインも今のところ最低限でスマホ対応のためレスポンシブだけ付けてる
信用と言っても自分の名前や住所はフッターのところから付けても良いけど
それだけで人来るかねw
0698nobodyさん
2016/10/05(水) 11:42:18.37ID:???くだらないことが発言しにくくなることを防ぐためね
0699nobodyさん
2016/10/05(水) 12:59:36.12ID:???しかも、SNSとは無関係のゴミtweetしかない
何がやりたいんだか
0700nobodyさん
2016/10/05(水) 13:57:54.17ID:???フェイスブックやらLineやら既にあるのに、
自分の年齢に近い人しか友達になれないっていう欠点なのか特徴なのかしらんが
それだけのためにわざわざ新しい怪しげなSNSに・・
まぁ、人は全く来ないと予想。
0701nobodyさん
2016/10/05(水) 14:13:17.07ID:???ゼロ年代前半臭はんぱない
0703nobodyさん
2016/10/05(水) 17:22:02.60ID:???0704nobodyさん
2016/10/05(水) 18:23:35.07ID:???0705nobodyさん
2016/10/05(水) 19:08:22.16ID:???まずデザインは最低限のしかやってない。
一応レスポンシブだからいいやって感じで機能開発に時間使ってました。
今後余裕ができればCSSフレームワーク等の使用を検討したり色々考えます
機能的にも最低限のものしかまだ入ってない
投稿に対する返信機能はすでにできるんだがまだ実装してない
他にもいいね!機能や通知機能も入れたい
まずFacebookはやってる奴いればわかると思うけど上司やら親世代と繋がるとかなり発言しにくくなる
Lineとの差は同じ学校だったりした人とも繋がれるのが異なる点
んでAgeareaでは学校を入力する項目があるんだけど文字が同一でないと一致して友達を探す時に上位に表示させられない
これは滅茶苦茶大きな欠点なんだがこいつを解消するためには日本全国の学校名を取得してDBに入れて選択表示させる必要がある
これはそのうちやりたいが手間がかかるのでまだ出来てない
とまぁ色々欠点はまだまだあるんですが上司世代と繋がらずに同世代と繋がれる可能性があるという特徴があります
0706nobodyさん
2016/10/05(水) 19:11:17.23ID:???ゼロ年代後半くらいまでは行ってないかな?w
前半はスマホなかったからレスポンシブなかったし
00年代後半から10年代前半くらいにはなってると思うんだけどw
0707nobodyさん
2016/10/05(水) 20:04:55.20ID:???高望みして技術に詳しく将来にわたって自社を引っ張れるような中途人材を求めた結果
足切りしまくってるのが現状なんでは
ようはなかなか採用が決まらずずっと採用情報に残ってるパターン
スタートアップの大量採用(といっても数人〜十数人)を過ぎたPHP扱う零細・小企業にはよくあること
0708nobodyさん
2016/10/05(水) 20:11:39.73ID:???>一応考えられるところは全部潰してあると思うのですが。
>もし見つけた方はメッセージか問い合わせから教えて頂けると助かります。 よろしくお願いします。
>超キャンペーン開始します!
> 10月7日までに新規登録者が100名(国内の匿名でない正規登録者)を超えた場合
>抽選で1名の方に1000円分のJCBギフト商品券を贈呈します。
>登録利用は無料なので是非ご登録と利用をお願いします!
引き返せないほど人集まったら脆弱性を1000万で売ろう
0709nobodyさん
2016/10/06(木) 00:23:05.51ID:???0710nobodyさん
2016/10/06(木) 06:23:25.11ID:???0711nobodyさん
2016/10/06(木) 09:05:40.38ID:???どうせ過疎なんだからそういうの披露しようぜ
0712nobodyさん
2016/10/06(木) 10:40:45.19ID:???遅いだの初心者向けだの言われる割には利用されてるよな
0713nobodyさん
2016/10/06(木) 11:05:35.65ID:???初心者向けと言われるのは滅茶苦茶な書き方をしてもそれなりに動くからそう言われるだけで玄人のような書き方も可能
スピードに関してはPHP7になってから他の速いと言われる言語にも引けを取らなくなった
だから書きやすくて生産性高い言語だし広く利用されるのは当然と言えば当然
0714nobodyさん
2016/10/06(木) 16:04:59.75ID:???まだPHP5.3使いなんで勉強しないといけないなぁ
0715nobodyさん
2016/10/06(木) 19:47:39.59ID:???後はRailsみたいにフレームワークとかその周辺が整備されてれば言語自体の差は大した問題じゃない
PHPはCとかPerlから殆ど何も考えずそのまま移行出来る分入口に集まりやすいんだろう
何も考えてないのも多いからそのまま入口に溜まりやすいのもだけど
0716nobodyさん
2016/10/06(木) 21:57:30.66ID:???まったく同じソースでも動作環境がPHP7になるだけで早くなるよ。
ソースコードにも新しい書き方が生まれているけど、それよりも変数を内部的にどんなメモリ構造で保持するかとかの改良がメインだから。
0717nobodyさん
2016/10/06(木) 23:11:42.96ID:???本格的に7のコードで書くのはまだ2・3年先の話だろうな
0718nobodyさん
2016/10/07(金) 00:42:58.67ID:ppFqxqELphpは昔クラスとかなかったしhtml内にも書けるからコードが汚くなる
とか変数の型指定しないから変な挙動することがあるとかそういうことだろう
それらの大半は今は解決されている
0719nobodyさん
2016/10/07(金) 01:07:10.34ID:???> html内にも書けるからコードが汚くなる
正しいが解決されてないし絶対解決されない
タイプヒンティングはinvariantじゃなくてcovariantならなぁ
0720nobodyさん
2016/10/07(金) 01:44:03.91ID:???htmlに書くことは出来るけどほぼ書かないで綺麗に書くことも出来るじゃん
つまり玄人向けの書き方も出来るということ
0721nobodyさん
2016/10/07(金) 04:55:45.68ID:???最初、Perl勉強してた時、HTMLの出力にめんどくささを感じたが、
PHPを知って一気に分かりやすくなり、結果的にプログラミング出来るようになったぞ。
0722nobodyさん
2016/10/07(金) 06:02:19.39ID:???混在は可能だがするべきではない
正直HTMLに混在させられるという解説は最初にすべきじゃないと思ってる
PHPが普及した理由は文法がCやPerlに, RubyやPythonよりかなり近いことに拠っていると思うね
0723nobodyさん
2016/10/07(金) 06:34:20.07ID:???以下のようなソースでも駄目なのか?
<ul>
<?php foreach ($list as $data): ?>
<li><a href="<?php echo $data['url']?>"><?php echo $data['title']?></a></li>
<?php endforeach; ?>
</ul>
ま、DBに登録したデータを出力するよくあるパターンだわな。
このHTML部分(ul、li、a)をPHP側で書いて出力すると
ビュー用のHTMLに「混雑していない」事になるかもしれないけど、
ソースは読みづらいし、デザインとロジックの分離の観点からも難しくなると思うぞ
0724nobodyさん
2016/10/07(金) 06:39:00.96ID:???それおかしくね?CやPerlやRubyやPython知らないと駄目じゃん。
それらの技術者が「PHPの方が簡単でわかりやすいからPHP使おう!」とはならないだろ。
0725nobodyさん
2016/10/07(金) 10:12:32.50ID:???宗教的理由で忌避するのは個人では構わないけどそうでないなら素直にテンプレートエンジン使っとけ
あとそのコードもechoをexplicitに書くのはどうなん
<ul>
<?php foreach ($list as $data): ?>
<li><a href="<?=$data['url']?>"><?=$data['title']?></a></li>
<?php endforeach; ?>
</ul>
>>724
結局プログラマの言語の基準って科学計算以外なら結局未だにCが基準だと思うんだ
C/C++/Java/C#はみんなかなり似た文法だと思うし, だからこそJavaは仮想マシン上, C#はWindows上で普及してると思う(言語自体が「まとも」であることは当然だが)
PHPも, だからWeb上で普及してると見る
あとCでWeb開発なんて普通しない(デメリットが大き過ぎる), PerlからPHPに移ったという層はそれなりにいるだろう
RubyやPythonから始めた場合には言及してない
0727nobodyさん
2016/10/07(金) 10:21:38.40ID:???PHPをHTMLに書くのと何が違うのかまるで分からん。
どっちも”プログラム的な何か”をHTMLに挿入するじゃん。
なのに「すべきでない」理由にならないと思うんだが
0728nobodyさん
2016/10/07(金) 10:26:03.21ID:???テンプレートエンジンとして使うにはPHPは高機能過ぎる
見えてよいもの以外は見えるべきではないし, 使ってよいもの以外は使えるべきでない
カプセル化の大原則だと思うのだけれど
0729nobodyさん
2016/10/07(金) 10:31:04.71ID:???PHPそのものが優秀なテンプレートエンジンだからね
フレームワークも必要最小限なものだけしか使ってない
0731nobodyさん
2016/10/07(金) 10:32:16.78ID:???デザイナーがデザインしやすくなるというのがあるんじゃないかな。分業しやすくなると
プログラムの流れとしてデータはデータベースに入れてプログラム変更に干渉しないようになったし
デザインとプログラムもできるだけ分けて干渉しないようにした方が良いということかなと
0732nobodyさん
2016/10/07(金) 10:45:41.10ID:???どちらも「プログラム的な何か」をHTMLに埋め込むじゃん。
729も書いてる通り、それでもHTMLが見やすく・分かりやすい形にできるし、
実行してすぐに結果も分かるから、初心者向けでとっつきやすい。
0733nobodyさん
2016/10/07(金) 10:46:46.22ID:???俺、昔の癖でショートタグ使ってないんだが、
php.ini変えなくてもPHP5.4から標準になったのね・・・
0734nobodyさん
2016/10/07(金) 10:47:08.04ID:???0736nobodyさん
2016/10/07(金) 11:14:25.56ID:???0737nobodyさん
2016/10/07(金) 12:24:34.06ID:???https://agearea.com/
0738nobodyさん
2016/10/07(金) 12:33:01.32ID:???それはテンプレートをdisってんのかね?
0739nobodyさん
2016/10/08(土) 00:16:20.30ID:???絶対の正解っていうのは存在しないさ。
ただしそれでもSymfony公式はTwigの使用を推奨していて、その一番の理由は、キャッシュしてHTTPアクセス時の処理不可を軽減できるからだね。
Smartyもそうだし、テンプレートエンジンと呼ばれてるものは大抵、ナマの言語で書いて毎回パースするよりは高速化できるキャッシュ機能をそなえているよ。
0740nobodyさん
2016/10/08(土) 01:15:37.18ID:???0741nobodyさん
2016/10/08(土) 02:00:06.91ID:???その辺のテンプレートエンジンはなんか大げさなんだよなあ
0742nobodyさん
2016/10/08(土) 02:40:57.69ID:???shell_exec("php {$phpfile}")で取る?
それともcurlとかでlocalhost http経由で取る?
前者だと環境依存が強くなるから、どちらかというと確実な後者のほうがよさそう?
0743nobodyさん
2016/10/08(土) 11:38:47.90ID:???こんな程度の対策してないサイトがたくさんあるの?w
0744nobodyさん
2016/10/08(土) 11:51:11.30ID:???ゴミクズみたいなオレオレテンプレートエンジンつくって
「これ使って下さい」とか言われたのでコード読んでみたら全くエスケープ機能がなくて
XSSし放題じゃんってのを去年見た。
そのバカ会社はSQLインジェクションもし放題で、
DBまるごと吹っ飛ばせる状態だった。
同じサーバー内ならshell_execで取る。
あるいは、memcachedみたいなメモリキャッシュシステムを使っちゃう。
ここ最近の>>738あたりから>>743あたりまでを総なめしてレスしてみました。
0745nobodyさん
2016/10/08(土) 11:59:56.24ID:???自分の場合PHPでDBにデータ入れる時とか表示する前にエスケープしてるけど
そんなXSSやSQLインジェクションし放題の会社があるとはw
そんなとこに依頼するなら自分のところに依頼してくれりゃあいいのにw
0746nobodyさん
2016/10/08(土) 13:57:34.21ID:???置換する実装書いちゃうんだろ??
0747nobodyさん
2016/10/08(土) 14:06:25.34ID:???0749nobodyさん
2016/10/08(土) 14:29:44.74ID:???都合(この場合はHTMLを使って表示?)であって、
バックエンドのデータベースにクライアント側の都合に合わせてエスケープして入れるとかしねぇわ。
0750nobodyさん
2016/10/08(土) 14:47:46.08ID:???DBに入れる前にエスケープでも良いと思うけどなぁ
なんなら、フォーム処理は全てエスケープすればいい。
0751nobodyさん
2016/10/08(土) 14:58:00.40ID:???なんで、バックエンドのデータベースに表示側の責務(エスケープしなければいけない)を負わせなければいけないんだ?
復元できるからいいとかいったらそりゃ何でもありになるわ。
そのシステムでHTMLを使って表示しないAndroidやiOSのアプリを開発しなければいけなくなったら、
そのエスケープが邪魔になるし。
0752nobodyさん
2016/10/08(土) 14:58:26.83ID:???例えばreal_escape_stringは良いけど
htmlspecialcharsとかで処理するのは論外
0753nobodyさん
2016/10/08(土) 15:01:23.12ID:???2chのDATと同じ発想だな・・・
2chのDATもHTMLで表示が前提でエスケープしてあるから、
HTMLで表示しない専ブラとかでもいちいちエスケープを解除しなければいけない・・
もちろん、解除するのはアンエスープする関数を呼ぶ1行追加すりゃすむけど、
俺的にはそういう問題じゃねぇ。
0754nobodyさん
2016/10/08(土) 15:02:14.83ID:???>そのシステムでHTMLを使って表示しないAndroidやiOSのアプリを開発しなければいけなくなったら、
そんなケースあるか?
常に「こうだったら」「あーだったら」ってお前のように心配事繰り返すなら、
そもそも最初からやればリスクは減るよねってことだ
0755nobodyさん
2016/10/08(土) 15:06:38.25ID:???0756nobodyさん
2016/10/08(土) 15:09:11.75ID:???「対策していると”思ってた”」「出来ている”つもり”だった」ってのがあるだろ。
XSSやSQLインジェクション関連の情報流出って大体そうじゃないか?
端からセキュリティ観念がゼロでシステム開発している奴なんて稀だろ。
そら、責務やら論理的観点やらプログラマとしての正しさやら
言い出したらキリがないよ。
「俺は絶対間違えない!」ってのなら、出力時だけエスケープすればいいだけで、
DB入れる前にエスケープしてる奴を全否定するのは違うだろ
0757nobodyさん
2016/10/08(土) 15:09:46.05ID:???と考えると、不要なエスケープをするとデコード方法がわからない(そもそもデコード処理が必要なのかもわからない)ので困る。
0758nobodyさん
2016/10/08(土) 15:10:30.15ID:???クソなシステムは正しく動かなかったり、穴だらけのシステムのことで、
「ちゃんと動かす処理」をどうしようが勝手じゃねーか?妙に神経質なやつがいるな
0759nobodyさん
2016/10/08(土) 15:23:33.68ID:???まともなテストしてねぇだけじゃんかよ。それww
XSSやSQLインジェクションになる部分なんて明らかなんだからしっかりテストとコードレビューするしかないんだって。
>「対策していると”思ってた”」「出来ている”つもり”だった」ってのがあるだろ。
その通り、だから、仮にデータベースにエスケープしてデータ入れるとしても、
「しっかりデータベースをエスケープして入れてると"思ってた”」になっちゃうんだよ。
だから、そんな事よりしっかりテストとコードレビューするしかないんだってww
0760nobodyさん
2016/10/08(土) 15:49:06.96ID:???0761nobodyさん
2016/10/08(土) 15:56:07.39ID:???これは自分1人でしか開発したことがねぇやつが言う言葉だろ。
0762nobodyさん
2016/10/08(土) 17:36:47.26ID:???自分がDBに入れる前にエスケープするのはSQLインジェクションを防ぐためと念のためってだけ
人間どこでミスするかわからんし
もちろん表示の時だけエスケープした方が良いってのはその通りだが
結局ちゃんとユーザー側で動いていれば良いしそれが正義だと思ってる
逆にそれで何かあった時の方が怖くないか?
個人情報漏れとかね
0763nobodyさん
2016/10/08(土) 19:51:23.91ID:???入力をストレージに保存する際に表示形式に合わせた「変換」を行うとデータの再利用性が失われる
0764nobodyさん
2016/10/08(土) 21:31:42.94ID:???もちろんその通り防ぐ「べき」
しかし現実にPDOはIN句が使えなかったりして複雑な処理しなきゃいけなかったり、重くなったりする
そういうことを考えると入れる時にエスケープしておくのが安全かと自分は考えている
そういうリスクを負ってでもデータの再利用性を重視したいという人は表示の時のみエスケープすれば良いんじゃないかな
0765nobodyさん
2016/10/08(土) 21:42:28.25ID:???これがそもそも間違ってると思う。
そもそも、何人かちらほらデータベースに入れる「前」にエスケープした方が安全みたいな論調が
あるが、エスケープを「前」にしようが「後」にしようが、人間ミスすることには変わりないし、
最終的には>>759で書いたようにレビューしてテストするしかないのに。
なんで勝手にデータベースに入れる前にエスケープした方が「安全」だと思ってるのか?
「前」だろうが「後」だろうが安全性は変わらん。最終的にはレビューとテストで安全性を担保にするしかないのに。
何を根拠に「前」の方が安全っていってるのか理解しかねる。
0766nobodyさん
2016/10/08(土) 21:45:57.17ID:???そりゃ入る時は一度しかないけど取り出すのは理論上無限にあるからでしょ
回数考えれば一度と無限じゃ手間が全然違う
0767nobodyさん
2016/10/08(土) 21:51:03.04ID:???もちろん、入れるのと取り出すのは取り出す方が多いのは統計的にもそうだろう。
0768nobodyさん
2016/10/08(土) 22:04:49.87ID:???根本的にエスケープがどういうものかを分かってない。
XSS脆弱性埋め込むよりはマシだろというのは、
ポスターが剥がれるよりいいだろって言いながら4辺をガムテープ貼りする概念だ。
エスケープはターゲットに出力する時、都合が悪い物にだけする。
teratailあたりをずっと眺めてればわかるけど、
二重エスケープでHTMLタグが表示されてることが何度もあった。
エスケープをどのように扱うべきか、ちゃんと分かってない奴が作ってるからそうなるのさ。
見た目なんかどうでもいい、って人はまぁ、たしかにとにかく最初にエスケープしちゃえばいいよ。
メンテナンスする人が君のことを呪うだろうけど。
0769nobodyさん
2016/10/08(土) 22:17:21.41ID:???>エスケープはターゲットに出力する時、都合が悪い物にだけする。
これは別に、選択的にエスケープしろ、という意味じゃないよ。
普通のテンプレートエンジンが使っているであろうhtmlspecialchars()というメソッドが、
勝手にどれをエスケープすべきかは判断してくれるので、
グラマとしては「マズいものが有りそうな物を出力する時にだけ」かたっぱしからかけろ、
という意味ね。
>>748のSQLに関するプレースホルダについては
ちゃんとプレースホルダを使っているのであれば、それはエスケープですらない。
クエリをプリペアしてあるので、そこに当てはめる値についてはエスケープする必要がまったくないんだ。
SQLについてエスケープする必要があるのは、全部テキストでSQLを投げる場合。
0770nobodyさん
2016/10/08(土) 22:28:21.64ID:???>そりゃ入る時は一度しかないけど取り出すのは理論上無限にあるからでしょ
>回数考えれば一度と無限じゃ手間が全然違う
無限に処理をするのは君じゃなくてコンピュータだからね。そんな数を比べても意味ないよ。
君がすることは、出力の時に都合が悪い物をエスケープしてくれる処理を
1つの出力(PHPだとページと等価かな)について1回コードを書くだけ。
それで、メジャーなテンプレートエンジンは、その処理を勝手にやってくれる。
(Smartyがダメなのは、そのエスケープ処理がデフォルトではやらないようになっていること
Twigが優れているのはデフォルトがエスケープ処理をする設定になっていること)
エスケープに要する時間はピリオドの後0が2つの後に数字がくるくらいかな。だから気にしなくていいよ。
0771nobodyさん
2016/10/08(土) 22:29:55.02ID:???安全性は最高だし、特定の関数に依存する変換処理にならないし
0772nobodyさん
2016/10/08(土) 22:31:38.53ID:???上の方でずっとあっちのスレと俺を目の敵にしてた君じゃないかな?
君はまだまだダメだ。もうちょっと勉強し、経験を積み、頭を使いなさい。
0773nobodyさん
2016/10/08(土) 22:36:55.26ID:???それ、特定文字だけエスケープするのと何もかわんないよ、きっと。
DBに突っ込んだ内容をメールで送りますってなったら、
する処理、二つの場合で変わるかい?
DBに突っ込んだ内容を画面に表示しますってなったら、
する処理、二つの場合で変わるかい?
これは変わりそうだね。
なぜなら、文字コード表記を戻してJavaScriptを含んだHTMLが再現され、
見事にXSSが発動するはずだからだ。
そしたら、よけいめんどくさんじゃないかい?
0774nobodyさん
2016/10/08(土) 22:49:38.60ID:???>しかし現実にPDOはIN句が使えなかったりして複雑な処理しなきゃいけなかったり、重くなったりする
使えないなんてことは絶対にないし、
君が「複雑だ」と感じるのは、単純に君の技術がまだまだ低すぎるから。
たぶん、コードをベタ書きしているレベルってことだろう。
もうちょっと頭を使いなさい。
IN句の重さについては、
DBにもよるが、普通の利用において問題になるほどほど重くなることは通常無い。
気になるとしたら、設計上の問題が大きい。
IN句の中に書く要素数は仕様によって決まるものだからプログラムだけではいかんともしがたい場合もある。
確かに昔のMySQLなんかはIN句がやたら重かったからね。
それから、大抵のDBではSQLの1文に書ける文字数の上限があるので(それでもかなりの文字数はかける)
IN句で表現しようとすると、その文字数を超える場合もでてくる。
そういう意味で、IN句ではなく別の実装にしておこう、というケースはよくある。
0775nobodyさん
2016/10/08(土) 22:57:41.06ID:???>「入力でサニタイズ」することが大間違いなのだが、そう言ってしまうと、 「一般的に言われている“正しい”対策」と言ったことと矛盾してしまうため、 「サニタイズ自体は誤りでない」ことにして辻褄を合わせようとする。
>その結果、「サニタイズは誤り」という本当のことを書けなくなり、「SQL文 を組み立てているすべての個所でサニタイジングする」と言わざるを得なくなっ ている。
>こうやって「サニタイズ」の用法は節操なく拡大されてきた。そして、誤解す る者をいつまでも残す結果となった。
0776nobodyさん
2016/10/08(土) 22:59:13.78ID:???0777nobodyさん
2016/10/08(土) 23:01:31.18ID:???XSS対策用のエスケープと
SQLインジェクション対策用のエスケープを
ごっちゃにしている人がいるみたいだから、ちゃんと区別しような。
ごっちゃにして解説している本とかもいっぱいあるけど。
0778nobodyさん
2016/10/08(土) 23:05:46.92ID:???どこからの引用かわからないけど、その通りだね。
トンデモ解説なテキトーな書籍が沢山出版された事が元凶なんだろう。
誰が言っていたか忘れたけど、
「出来るやつは実行する。出来ないやつが教える」って事なんだろう。
0779nobodyさん
2016/10/08(土) 23:11:41.51ID:???>>762 : nobodyさん2016/10/08(土) 17:36:47.26 ID:???
>久々に盛り上がってるねw
>自分がDBに入れる前にエスケープするのはSQLインジェクションを防ぐためと念のためってだけ
>人間どこでミスするかわからんし
君は、
>久々に盛り上がってるねw
こんな余裕をかましている場合じゃないほど、物事をわかっていないんだ。
0780nobodyさん
2016/10/08(土) 23:17:32.21ID:???俺は困らないし。
0783nobodyさん
2016/10/08(土) 23:23:42.03ID:???複雑って程でもないけどそれなりに面倒だよ
IN句をそのまま使えた方が良い
それ以前にIN句をそのまま使えないPDOがクソと言えばクソだが
0784nobodyさん
2016/10/08(土) 23:23:42.62ID:???ちょっとだけ補足
>「入力でサニタイズ」することが大間違いなのだが
ここだけ、間違いね。
フォームで期待されている値以外を排除するための「入力でのサニタイズ」
つまり、本当の意味でのサニタイズは絶対に必要だよ。
その後に書くプログラムの量と複雑さに関わってくるからね。
まず、仕様で定められている値にサニタイズする。これが鉄則。
これが出来ていないプログラムが実に多すぎるのが残業だらけのクソ業界に繋がっている。
このサニタイズの際には不必要な改行コードやNullバイトも必ず削除しておくこと。
これも、ちゃんとやっているシステムを見たことが無い。
そのせいでphpmyadminの古いバージョンではNullバイト攻撃による任意のPHPコード実行が可能な脆弱性があって、
アホみたいな話だけど、PHPの方でこの脆弱性を修正した。
0785nobodyさん
2016/10/08(土) 23:24:50.82ID:???現実にやってるか言ってるんだけど、
君がやり方を分からないって可能性を、なぜ排除した?
この短い時間で。
0786nobodyさん
2016/10/08(土) 23:26:10.85ID:???>やったことあればわかるしちょっと調べればわかること
よし、じゃあ、その調べたソースを見せてみてくれ。
添削してあげるから。
何度も言うけど、君は技術力も知能も低すぎるんだ。
自覚しないと前に進めないよ。
0787nobodyさん
2016/10/08(土) 23:27:46.57ID:???クソなのは、君の脳
ちょっと、「どうして複雑だと思うか」を分かるように、コード書いて見せてごらん。
教えてあげるから。
0788nobodyさん
2016/10/08(土) 23:30:45.67ID:???なんでこっちが見せなきゃいけないんだw
自分で仮想サーバーなりなんなりでPDO使ってIN句入れて実行してみれば良いだろw
そのままじゃ動かないから
IN句のやつをorでやればできるけど
0790nobodyさん
2016/10/08(土) 23:35:02.65ID:???>なんでこっちが見せなきゃいけないんだw
上の方読んでもまだわからないの?
君がアホすぎるから、今の君のアホな脳内をみせてくれないと
どこが間違っているのか教えられないよ、ってこと。
「PDOではIN句が使えない」なんて、猿でも言わないよ。
PDOってのはただの抽象化レイヤーでしかないからね。
>自分で仮想サーバーなりなんなりでPDO使ってIN句入れて実行してみれば良いだろw
だから実際に使っているから言っているんだよってさっきも言ったよね。
君さ、毎回毎回草生やしてるけど、そんな余裕ないほど自分がアホの子なんだってそろそろ気付こうよ。
0791nobodyさん
2016/10/08(土) 23:38:49.31ID:???きみ、アホ君かな?
まず、XSS脆弱性とSQLインジェクション脆弱性の違いを理解しよう。
君が全く理解できていないことは、この文章のバカさ加減を見ればすぐにわかる。
>では聞くがDBにエスケープしてデータ入れて困る時って具体的にどんなケースなの?
答えを書いてあげようか?
DBに「なんらかのエスケープされたデータ」を入れた事「自体」で困ることはない。
だが、その取扱において困るケースは沢山有る。
君は「DBにエスケープしてデータ入れて」と書いたが、
このエスケープとは、何に対するエスケープか?
それを理解しない限り、君は相変わらずネアンデルタール人以下のままだ。
0792nobodyさん
2016/10/08(土) 23:39:36.84ID:???サルでも言わないんだw
ここでは言ってるけど
http://tips.recatnap.info/wiki/PDO%E3%81%A7where%E5%8F%A5%E3%81%AE%E3%80%8Cin%E3%80%8D%E3%82%92%E4%BD%BF%E3%81%86
0793nobodyさん
2016/10/08(土) 23:44:44.66ID:???何に対するエスケープかと言えば主にXSSと次にSQLインジェクションだよ
XSSはポストから不正なコードを埋め込まれる脆弱性でSQLインジェクションは不正なコードによりSQLを実行されることだ
自分1人なら出力時に完全にエスケープできるとしても他の奴がもしやらずに出力したらどうするんだ?
実際に脆弱性突かれてるケースがあるというのに
んでその取扱いにおいて困るケースってのは「具体的」にどんなケースなの?
3つくらいで良いから教えてよ
0794nobodyさん
2016/10/08(土) 23:46:26.67ID:???君、本当に、どこまでバカなのかな?
どうしてそれを見て「使えない」と思ったの?
ちょっと説明してみてくれる。
君、思ってた以上に頭が悪いようだな。
あと、
>ここでは言ってるけど
この人誰? なんか有名な人なの?
全然知らない人が書いた、意図も分からないペラのページ見て
「PDOではIN句が使えない」と思い込んじゃう君の脳みその構造がよくわかんないな。
0795nobodyさん
2016/10/08(土) 23:49:14.53ID:???いや実際にPDOでそのままIN句は実行できないわけだが?
可能ならPDOでIN句そのまま使いたいから使える方法教えてくれよw
0796nobodyさん
2016/10/08(土) 23:50:51.44ID:???>何に対するエスケープかと言えば主にXSSと次にSQLインジェクションだよ
君はさ、その二つが別の物だとわかっているのに、
一つの文章の中で「エスケープはどうする」って語るんだ。
君が頭おかしいところの一つはそこ。
>自分1人なら出力時に完全にエスケープできるとしても
>他の奴がもしやらずに出力したらどうするんだ?
>その取扱いにおいて困るケースってのは「具体的」にどんなケースなの?
>3つくらいで良いから教えてよ
・君一人なら、DBに入っているデータは「ある形式でエスケープされている」とわかるとしても
他の奴が「その形式でエスケープされている」って事をとくていするにはどうするんだ?
・上の方のteratailの項参照
・上の方のメール送信の項参照
3つだね。これでいいかな?
■ このスレッドは過去ログ倉庫に格納されています