【PHP】下らねぇ質問はID出して書き込みやがれ 132
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/01/20(月) 06:23:11.66ID:???過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 131
http://kohada.2ch.net/test/read.cgi/php/1384065969/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.5
【連携ソフトウェア】MySQL ImageMagick
【質問内容】
◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
(荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)
◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。
【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0448nobodyさん
2014/03/06(木) 09:00:15.91ID:???*10/10はどうかと思うが
0449nobodyさん
2014/03/06(木) 09:02:14.32ID:???最近のroundはだいぶいいらしい
0450nobodyさん
2014/03/06(木) 09:19:18.11ID:???配布物は5.2で書くべきか
0451nobodyさん
2014/03/06(木) 09:23:13.18ID:???0452nobodyさん
2014/03/06(木) 09:28:31.05ID:???roundに桁数指定がない みたいな
どっかのサイト見ちゃったんだろう。
http://masago.kir.jp/php20030828.php とか
0453nobodyさん
2014/03/06(木) 09:31:54.91ID:???まだあったのか
0455nobodyさん
2014/03/06(木) 09:33:09.20ID:???0456nobodyさん
2014/03/06(木) 10:38:49.09ID:???wordpress層を除くとガラッと変わりそうだけど
会社は5.5、外部に出すものは5.4にしてるよ
0457nobodyさん
2014/03/06(木) 13:20:34.69ID:???どのバージョンを意識して作ったものかっていう統計?
serverじゃなくてwebsitesって書いてるよなあ
でもそんなの調べようがないし謎だわ
websitesってのはサーバのことなんだろうか
0458nobodyさん
2014/03/06(木) 13:27:47.99ID:???5.7とか大きく変わった点とかあるの?
0459nobodyさん
2014/03/06(木) 13:46:18.53ID:???5.6はたいした変更点もないような
なんかperlっぽくなってる気がする
5.4の配列ショートカット[]と5.5のfinallyサポートはいいな
トレイトとかジェネレータとかわからんw
0460nobodyさん
2014/03/06(木) 14:16:48.86ID:???サンクス、[]は見慣れるまでがキモイかも、無理して使わなくても良いだろうし使い所だね
トレイトは見てみたらこれは結構便利くさい、多重継承が欲しいこと稀にあるから
finallyもあればあったで便利だな
ちょっと5.5試してみる
0463nobodyさん
2014/03/06(木) 16:30:58.37ID:???5.6でRubyのスプラット演算子やオプショナル引数の配列化みたいな事ができるよ
じゃあ名前付き引数も?ないよそんなもの
function f($a, $b = null, ...$c) { return $c; }
# わかる
assert(f(1) === []); # pass
assert(f(1, 2, 3, 4, 5) === [3, 4, 5]); # pass
assert(f(1, 2, ...[3, 4, 5]) === [3, 4, 5]); # pass
assert(f(...[1, 2], ...[3, 4, 5]) === [3, 4, 5]); # pass
# まぁわかる
assert(f(1, 2, ...[123 => 'v']) === ['v']); # pass
# arrayは順序付き連想配列だもんな、OKOK
assert(f(1, 2, ...[1 => 'a', 0 => 'b']) === ['a', 'b']); # pass
# クソァ!
assert(f(1, 2, ...['k' => 'v']) === ['v']); # Catchable fatal error: Cannot unpack array with string keys
0467nobodyさん
2014/03/07(金) 15:21:44.37ID:???0468nobodyさん
2014/03/07(金) 18:23:42.03ID:Y3p7/jDT上記の処理でコメントされた文字列の中のURLを自動リンクしようとしています。
コメントはimgタグのみ許可しているので、
�@http://aaaa.com
�A<img src="http://aaaa.com">
�@のような場合は自動リンクしたいのですが
�Aの場合は自動リンクしたくないです。
この場合どのように条件式を書けばいいですか?
0469nobodyさん
2014/03/07(金) 18:25:10.67ID:Y3p7/jDT�Bhttp://aaaa.com/1.pngという文字列が単体であった場合は自動リンクしたいので
拡張子検索以外でお願いします。
0470nobodyさん
2014/03/07(金) 18:40:22.88ID:???src="に続く場合は除けばいいんだろ?
eregはやめようよ。
0471nobodyさん
2014/03/08(土) 09:27:18.48ID:wySctgna宅間守の社会に対する被害者意識は
子供の頃に体験した招集ストーカーによって培われた
当時宅間守の親は近所の創価学会に批判的な人物を
子供を襲う危険な性犯罪者とし
宅間守とその友人に危険人物の顔をお覚えされるなどとして
再三に渡って招集ストーカーを行っていた
宅間守は遊び半分で嫌がらせを楽しみながらも
親からは「お前はいつ襲われるか分からない被害者なんだ」と言われる
こうして犯罪を繰り返しながらも被害者面する生き方を教え込まれた
0472nobodyさん
2014/03/08(土) 10:07:07.19ID:vNXlneYeフォームへの直アクセスを防ぎたい場合、
if (strstr('利用規約のURL', $_SERVER['HTTP_REFERER']) == false) {
// エラーメッセージ
}
とする書き方でも問題無いですよね?
出来ればセッション無しでシンプルにやりたいと思っています。
0473nobodyさん
2014/03/08(土) 10:11:37.36ID:???リファラーとか無意味なのはプロなら分かるはずだぜ?
0474nobodyさん
2014/03/08(土) 10:17:10.55ID:???抜け穴を通ることで明確な利益を得られるわけじゃないだろうし
リファを弄ってきた相手に対する規約の拘束力があるかはさすがにしらん
0475472
2014/03/08(土) 10:20:26.60ID:???リファラスパム(偽装)とか考えられますが、
フォームの入力チェックはしているので、
そこまで強固なチェックは必要ないと考えています。
ですので、単純に>>472の書き方で最低限(非技術者)に対する
チェックは出来ているのか否かをアドバイスいただければ幸いです。
0476nobodyさん
2014/03/08(土) 10:27:10.85ID:???・サービスレベルの制限ではない(有料コンテンツ等)
・リファラの偽装自体、基本的に悪意がない限りは行わない(XSRFとかで飛ばされる可能性はあるけど)
ってあたりでコンシューマ向けの制限としては問題ないんじゃないかと思う
0477nobodyさん
2014/03/08(土) 10:34:32.73ID:wySctgna宅間守の社会に対する被害者意識は
子供の頃に体験した招集ストーカーによって培われた
当時宅間守の親は近所の創価学会に批判的な人物を
子供を襲う危険な性犯罪者とし
宅間守とその友人に危険人物の顔をお覚えされるなどとして
再三に渡って招集ストーカーを行っていた
宅間守は遊び半分で嫌がらせを楽しみながらも
親からは「お前はいつ襲われるか分からない被害者なんだ」と言われる
こうして犯罪を繰り返しながらも被害者面する生き方を教え込まれた
0478nobodyさん
2014/03/08(土) 10:35:30.93ID:???利用規約ページからのリファラーが条件なら、strstrの処理はいらないんじゃない?
単純に、これでよさそう(より制限的になる)。
if ('利用規約のURL' !== $_SERVER['HTTP_REFERER'])) {
// エラーメッセージ
}
あとは、利用規約への同意を、チェックボックスにチェックしてもらって、
それを確認している作りならば問題なさそう。多分。
できれば、ワンタイムトークンとか組み入れた方が良いけど。
0479nobodyさん
2014/03/08(土) 10:38:33.31ID:???0480472
2014/03/08(土) 10:40:16.40ID:???利用規約同意のチェックはしています。
ワンタイムトークンはセッション無しで出来ますかね?
調べてみます。皆さま、アドバイスありがとうございました。
0481nobodyさん
2014/03/08(土) 10:41:41.97ID:???0482nobodyさん
2014/03/08(土) 10:46:00.11ID:???なんでセッションを使うのを拒否するのか・・・
数行のコード入れて変数を作るだけなのに難しいものでもないでしょう
0483nobodyさん
2014/03/08(土) 11:26:55.79ID:???0484nobodyさん
2014/03/08(土) 11:35:13.55ID:???>フォームへの直アクセスを防ぎたい場合、
この間がPOST処理なら、 POSTメソッドを確認すれば、直アクセスは防げる。
0485nobodyさん
2014/03/08(土) 11:36:28.95ID:???フォームの送信ボタンで兼ねちゃっても構わないと思いますがね。
問い合わせフォームに規約に同意しないと見られては困るものがあるんですかね。
0486nobodyさん
2014/03/08(土) 11:40:35.08ID:???http://www.mcdonalds.co.jp/cservice/information/q_a/form/attention.html
http://www.mos.co.jp/faq/voice/
https://www.lotteria.jp/inquiry/form/
こいつ最高にロッテリア
0488nobodyさん
2014/03/08(土) 12:09:08.81ID:???>ワンタイムトークンはセッション無しで出来ますかね?
アクセスごとにランダムでキーを生成できて、そのアクセスだけと紐付けした上でフォームへキーを渡す方法があるならいけるよ
0489nobodyさん
2014/03/08(土) 13:26:06.26ID:???0490nobodyさん
2014/03/10(月) 00:50:12.28ID:???あれほど馬鹿はPHPを使うなといわれていたのに。
http://maguro.2ch.net/test/read.cgi/poverty/1394376340/
0491nobodyさん
2014/03/10(月) 01:49:20.59ID:???0492nobodyさん
2014/03/10(月) 05:57:53.18ID:???迷惑だから
0493nobodyさん
2014/03/10(月) 09:22:15.43ID:???0494nobodyさん
2014/03/10(月) 09:26:40.86ID:???0495nobodyさん
2014/03/10(月) 10:11:39.87ID:doEo9Ey2パスワードにsaltを付加し、md5で暗号化した場合、
復元される可能性はどれくらいあるでしょうか?
atwikiでパスワードの漏出・復元が問題となっているようで、
とても気になります。
(こちらはsaltの付加がなかった為、復元されてしまったようです。)
0496nobodyさん
2014/03/10(月) 10:33:05.79ID:???短ければ即復元できるし
ながければそれにかけるリソースがもったいないと攻撃者が感じるだろう
0497nobodyさん
2014/03/10(月) 10:55:06.64ID:???saltが無かったとしても、復元できるのは辞書攻撃とかに弱いパスワードもしくは短いパスワードだったんじゃないのかな。
saltがあった場合、saltが判明していれば、saltが無いのと同じ。判明してなければ判明するまで基本的に無理。
0498495
2014/03/10(月) 12:07:37.27ID:Z0OipPDvありがとうございます。
自サイトで、長めのsaltの付加をしておいて良かったです。
ただ、md5ではなく、sha1とかにしておけば良かったと少し後悔。
saltまで流出すると、復元されてしまうのは怖いですが、
レンタルサーバー自体に脆弱性が有る場合には、対策が難しいですよね。
0499nobodyさん
2014/03/10(月) 12:12:52.98ID:???だからパスワードは長くしろといわれるんだよ。
文字の種類も混ぜろといわれるでしょ。
安易なパスワード設定は、キャッシュカードの暗証番号に誕生日設定するのと同じような愚かさだから、
設定したユーザにもある程度の責任があるとも考えられる。
0500nobodyさん
2014/03/10(月) 12:36:50.61ID:???メモしないと覚えられないくらいに複雑じゃないと安心できんな
0501nobodyさん
2014/03/10(月) 13:02:03.69ID:???0502nobodyさん
2014/03/10(月) 14:22:36.78ID:???これをユーザーサイトでinclude_onceしているのですが100kbyteというのは普通なんでしょうか?
読み込むには大きいと感じますし、ユーザーがアクセスするごとに読み込んでいるとなると結構な負担になるのではと思っています。
0504nobodyさん
2014/03/10(月) 14:53:10.37ID:6p2nG/Rdhttp://jp.xivdb.com/?maps/30/s1f1-00/La-Noscea/Middle-La-Noscea
0506nobodyさん
2014/03/10(月) 15:05:08.74ID:4kaXJqs70509nobodyさん
2014/03/10(月) 16:25:56.64ID:???どの段階での違いの話をしているのか分からん。
質問者が求めてるであろうブルートフォースアタックに対しては
saltが無い場合とsaltが判明している場合に差はないよ。
0510nobodyさん
2014/03/10(月) 16:38:21.67ID:???0511nobodyさん
2014/03/10(月) 16:42:46.40ID:???0512nobodyさん
2014/03/10(月) 16:46:20.36ID:???>>495
>atwikiでパスワードの漏出・復元が問題
この段階での話
質問者が求めてるのは正しい暗号化の方法じゃないのか
長いsaltつけました、一回ハッシャ化しました、だけじゃ不十分だよっていうのが言いたかった
言葉足らずだったかもしれない、ごめんなさい
ちなみに、5.6から実装されたpassword_hash()とかsalt付きハッシュ返ってくるぞ
わざわざ分けて保存するのか?
0513nobodyさん
2014/03/10(月) 16:47:01.13ID:???0514512
2014/03/10(月) 16:48:13.96ID:???今調べたら、5.5からでした
ごめんなさい
0515nobodyさん
2014/03/10(月) 17:01:46.40ID:???正しい暗号化の方法を知りたいのか、
>>495がすでに実装している暗号化手法がどれくらい安全かの確認をしたかったかは不明。
個人的には後者だと予想しているけれど。
で、そもそも疑問文はこれですよ。
> パスワードにsaltを付加し、md5で暗号化した場合、
> 復元される可能性はどれくらいあるでしょうか?
>>497でsalt無しの場合について書いたのは、saltが無ければいくらでも復元できると思っているフシがあったから。
> (こちらはsaltの付加がなかった為、復元されてしまったようです。)
>>512の、わざわざ分けて保存するのか?についてはもう何が言いたいのか全然わからないです。
0516nobodyさん
2014/03/10(月) 17:07:30.76ID:???> 質問者が求めてるのは正しい暗号化の方法じゃないのか
> 長いsaltつけました、一回ハッシャ化しました、だけじゃ不十分だよっていうのが言いたかった
> 言葉足らずだったかもしれない、ごめんなさい
これに関しては同意です。
0517512
2014/03/10(月) 17:10:46.06ID:???>個人的には後者だと予想
それを理解してる人は>>495みたいな質問しないだろ
>そもそも疑問文はこれですよ。
その質問が>>495の意図とは限らない。正しいというか安全な暗号化方法をしりたがっているのかもしれない
>>510
これよ
意味あるんだよ。意味ないのは安全な暗号化されてない場合
>わざわざ分けて保存するのか?についてはもう何が言いたいのか全然わからないです。
わけてかくね
0518512
2014/03/10(月) 17:15:50.31ID:???php使う人5.5の実行環境ない人多そうだから例書いておく
password_hash ― パスワードハッシュを作る
http://jp1.php.net/manual/ja/function.password-hash.php
コード:
$options = [
'salt' => 'abcdefghijklmnopqrstuv'
];
echo $options["salt"]."\n";
echo password_hash("rasmuslerdorg", PASSWORD_BCRYPT, $options);
結果:
abcdefghijklmnopqrstuv
$2y$10$abcdefghijklmnopqrstuuAEy05HGRP6l80a9Rvt.ZZouqyKwOhX.
↑このソルトを分けて保存するのか?
っていう意味
0519nobodyさん
2014/03/10(月) 17:19:39.85ID:???おkわかった。
その理解度なら、もう一回勉強しなおしてからレスをしてくれ。
そして脆弱なシステムが生まれないようにするためにも人に教えるのをやめるべきだ。
> 警告
> この関数で使うソルトを自前で設定するのはお勧めしません。 ソルトを省略すれば、安全なソルトをこの関数が自動的に作ってくれます。
最低限この警告がどういう理由で書かれているのかを理解するまでね。
0520512
2014/03/10(月) 17:25:59.66ID:???$options = [
'salt' => base64_encode(file_get_contents("/dev/urandom", false, null, 0, 22))
];
echo $options["salt"]."\n";
echo password_hash("rasmuslerdorg", PASSWORD_BCRYPT, $options);
0522nobodyさん
2014/03/10(月) 17:35:46.06ID:???0523nobodyさん
2014/03/10(月) 17:56:45.51ID:???昔俺が質問したやつだったw
4年前か...
懐かしいな
今ではPHPも殆ど使っていないが、俺この4年間何してたんだろ...orz
0524512
2014/03/10(月) 18:46:35.86ID:???>>520無視してくれていいや
>>522
俺もそんな気がする。見返したら>>516で全部終わってたわ
暗号化の回数によってはsaltつけただけじゃ不十分であるっていうのと、
saltは秘密であることに意味があるんじゃないよっていうのがいいたかった
0525495
2014/03/10(月) 19:57:44.63ID:yFyJBN/9自分が実装した暗号化ですが、これは安全でしょうか?
<?php
//saltのあるファイルの読込
require_once '../init.php';
$pass_by_md5 = md5($password . $salt . $password);
?>
ユーザーからのパスワードでsaltを挟んでからmd5にかけています。
$pass_by_md5の文字列とsaltが同時に流出した場合、
元の$passwordはどの位の確率で解析されるでしょうか?
また、saltの流出が無い場合は、安全と考えて良いでしょうか?
0526nobodyさん
2014/03/10(月) 20:00:26.14ID:???0527nobodyさん
2014/03/10(月) 20:02:26.30ID:???そっちの方が安全だ
0528nobodyさん
2014/03/10(月) 20:06:35.52ID:???Wikipediaだと、元データは復元困難らしいが。
MD5 - Wikipedia
ハッシュの衝突耐性について
MD5のハッシュ値については、パソコンレベルで、数10分程度で、同一ハッシュ値の非ユニークなデータ列を生成できる実装が広まっている。
すなわち、強衝突耐性は容易に突破されうる状態にある。
ただし、任意に与えられたハッシュ値に対して、(何らかの別の)データを生成する実装が広まっているわけではないので、弱衝突耐性が容易に突破されうる訳ではない。
また、任意に与えられたハッシュ値に対して、改竄者の意図どおりのデータ列を容易に生成できる訳でもない(もしそうならば、それは既に暗号ではない)。
強衝突耐性の突破とは例えば、同一のハッシュ値を持つ非ユニークな2つのデータ列D1とD2のペアを1つ発見できた、ということである。
なお、この場合D1やD2が意味を持つデータであるかどうかは問われない。
0529nobodyさん
2014/03/10(月) 20:11:07.70ID:???そもそもどういうハッシュ使ってるか分かってない以上、まともには復元できないだろ。
別の予想もつかないような脆弱性を慎重に確認したほうが安全度が高いんじゃないか。
0530nobodyさん
2014/03/10(月) 20:14:14.82ID:???パスワードに数字1桁のものしか設定できないシステムがあるとするじゃん?
どんなに強固な暗号化方式を用いたとしても、10回の試行でパスワードは判明するよね。
これをあなたのいう「解析」に含めるなら、時間を無視すれば100%判明することはわかる?
だから上でも書かれてるように、パスワードの強度次第ということになるんだよ。
atwikiでパスワードがもれてるのは、パスワードの強度が低いものから順にもれてるの。
0531nobodyさん
2014/03/10(月) 20:24:05.61ID:???0532nobodyさん
2014/03/10(月) 20:36:28.76ID:???そういうのは暗号化とは言わないよ
パスワードを保存するならば、素直にpassword_*を利用すれば?
5.5未満ならば
https://github.com/ircmaxell/password_compat
を利用すれば良いと思うよ
saltを指定しないでpassword_hashを利用するようにな
0533495
2014/03/10(月) 20:52:48.68ID:yFyJBN/9セキュリティ関連について再確認したいと思います。
>>530
ユーザーに対して、強度のパスを登録するよう注意喚起したいと思います。
>>532
password_hashについて調べてみます。
いろいろお教えくださり有難うございました。
本当に感謝です。
0535nobodyさん
2014/03/10(月) 20:58:45.73ID:???Cやってた身としては、Cに似てるのはありがたいのだが…。
0536nobodyさん
2014/03/10(月) 21:03:57.45ID:???C、C++、PHP、Python、JavaScript、シェルスクリプト、あとちょっとだけJava使う俺は、暫く間隔開くとストレス感じることある
$付け忘れたり
varを宣言したりしなかったり
0537nobodyさん
2014/03/10(月) 21:28:51.97ID:???まあjQuery使ってるからってのが大いにあるけど。
0538nobodyさん
2014/03/10(月) 22:09:50.34ID:???0539nobodyさん
2014/03/10(月) 23:58:18.62ID:???【PHPのバージョン】5.2
【連携ソフトウェア】Apache
【質問内容】
<?php echo $_SERVER['REMOTE_ADDR'] ?>を仮にファイル名 a.php にして
ApacheとPHP入れた自分のパソコンのWebブラウザから http://127.0.01/a.php にアクセスすると
「127.0.0.1」と表示されると思うんだけど、ネット接続状態の自分のプロバイダIPを表示させる方法ってないかな?
自分のプロバイダがKDDIならKDDIのIP、SoftBankならSoftBankのIPが表示できるようにしたいんだけど。
外部のサーバにa.phpを置いてそれにアクセスすればいいんだけど、自分のパソコンの中だけで完結させたいんだ。
なんかいい方法ありませんか?「
0540nobodyさん
2014/03/11(火) 00:01:32.02ID:???0541nobodyさん
2014/03/11(火) 00:02:22.53ID:???わからないけどシステムコマンドに頼るしかないんじゃなかろうか
それに複数のネットワークに接続してたりルータ経由だったり
考える点はいろいろある
0542nobodyさん
2014/03/11(火) 00:02:37.88ID:???今の環境じゃ無理じゃないかね
0544nobodyさん
2014/03/11(火) 00:05:06.58ID:???連結演算子なんかは間違うな
PHPだと.だけどJSだと+だとか
大量に書いてから気付いた時には少し凹む
0545nobodyさん
2014/03/11(火) 00:08:10.18ID:???http://www.telize.com/
>There is no rate limit of any sort at the moment, and the service is free for everyone to use.
商用までいいかとかはわからん。
■ このスレッドは過去ログ倉庫に格納されています