【PHP】下らねぇ質問はここに書き込みやがれ 12

■ このスレッドは過去ログ倉庫に格納されています
2021/04/29(木) 12:39:39.75ID:P0iZ4CYt0
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
!extend::vvvvv:1000:512
★スレ立て時 ↑ が3行以上になるようコピペ

PHPに関する質問スレです

前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 11
https://mevius.5ch.net/test/read.cgi/tech/1591334726/

次スレは>>980以降
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
418デフォルトの名無しさん (オッペケ Sra1-4x/S)
垢版 |
2021/07/09(金) 19:09:49.46ID:KkNlGqxZr
>>417
向こうで聞いても教えて貰えなくて…
2021/07/09(金) 19:23:26.52ID:aS/fIL1f0
>>418
ナビに関係ないコードばかりだし
ブロックに波括弧とコロンが混在してて見づらいし
$nextpostと$prevpostを使ってとか言いながら、$nextpostと$prevpostがそもそもコード内に存在しないし

質問の仕方が悪い
420デフォルトの名無しさん (オッペケ Sra1-4x/S)
垢版 |
2021/07/09(金) 20:07:03.69ID:KkNlGqxZr
>>419
コードに付けたいんですが文字数制限があって書けないんです…
code penを見ていただけるなら書きますが…
421デフォルトの名無しさん (オッペケ Sra1-AlcT)
垢版 |
2021/07/09(金) 20:18:24.64ID:KkNlGqxZr
https://codepen.io/sadsfff/pen/bGWeOOo
このコードを書くとエラーが出ます。どこが間違っているのでしょうか?
syntax error, unexpected end of file, expecting elseif (T_ELSEIF) or else (T_ELSE) or endif (T_ENDIF)
2021/07/09(金) 20:57:16.85ID:TIX9j1Dy0
>>410
に書いたみたいに、HTML 内に、PHP の構文を埋め込めば?
逆に、PHPで文字列をつなげて、HTMLを作ると分かりにくい

Ruby on Rails では、全部そう。
HTML内に、Rubyの式を埋め込む

<%= 〜 %> は、HTMLに出力される。
<% 〜 %> は出力されない

Rubyで文字列をつなげて、HTMLを作らない

なぜかと言うと、パーシャル・部分テンプレートにして、
その部分だけを別ファイルにして切り出せないから

それに文字列でつなげて、HTMLを作ると、
SQL インジェクションみたいに、
相手が情報を抜くような命令を入れてくるので、超危険!

だから、Railsでは、a.html.erb みたいに、
ERB(埋め込みRuby)で書いて、それをHTMLにする
2021/07/09(金) 21:46:12.63ID:aS/fIL1f0
>>421
そもそも動かないコードとかさぁ
仮にナビができたとしても動かないじゃん

エラーの内容IFのタグの問題だよね
タグが合わないのはRSSの時に、タグ統一して不要な部分一旦コメントするなりして流れを追えって言われたよね?

何も進歩してないな、やれやれ…
424デフォルトの名無しさん (アウアウウー Sa09-4x/S)
垢版 |
2021/07/09(金) 22:34:16.27ID:SqCApkwQa
>>423
元のコードが動いていて、ページ要素を加えるために$next postを加えたときにエラーが起きました

タグを統一って具体的にどこでしょうか?
2021/07/09(金) 22:39:05.83ID:nNC4f6Lr0
文法エラーくらいは自分で見つけられないと
2021/07/09(金) 23:06:03.20ID:aS/fIL1f0
>>424
if やら foreach やらのブロック開始終了タグが波括弧だったりコロンだったりってのを直していくってことね

wordpress触る以上埋め込みが混在するコードを追う能力は必須になるから、この程度のこと自力で解決できないならwordpress触るの諦めたほうがいいよ
2021/07/09(金) 23:58:42.15ID:TIX9j1Dy0
Web制作管理板のWordPress のスレで、やってるみたい

5ch ではマルチポストは禁止だから、このスレでは話を続けない方がよい。
向こうのスレで議論してください!

1つのスレだけにしないと、答える人も同じ事を調べたりするので、無駄
2021/07/10(土) 02:46:38.45ID:gwvQHAgv0
Rubyバカが自分を棚にあげて何か言ってる
429デフォルトの名無しさん (ワッチョイ 15c5-jjVx)
垢版 |
2021/07/10(土) 02:53:56.58ID:etRC44er0
>>5ch ではマルチポストは禁止

いつそんなこと決まったんだ?
2021/07/10(土) 06:01:14.33ID:BwwaALiC0
https://info.5ch.net/index.php/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%9D%E3%82%B9%E3%83%88%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F
2021/07/10(土) 08:21:25.24ID:l5rpHYDO0
>>430
それとはマルチポストの意味が違う
それに禁止されてるわけではない
2021/07/10(土) 10:30:31.94ID:BPX48WFJ0
同じ質問を至るところでして、回答者がいても返信すらしないというのはよくある事
書き捨てする様な質問には誰も答えないし、迷惑千万
2021/07/10(土) 12:57:51.58ID:B4xS3BY90
俺はヒールに徹するルビー君が結構好きだったんだけど
常識を語るようになったら終わりだね
2021/07/10(土) 13:45:53.05ID:npYW/9LsM
>>431
マルチポストの定義すら分からんのか
435デフォルトの名無しさん (ワッチョイ 239f-jjVx)
垢版 |
2021/07/10(土) 17:15:08.23ID:xuQr++Bu0
>>434
お前がな
436デフォルトの名無しさん (オッペケ Sra1-AlcT)
垢版 |
2021/07/10(土) 23:37:27.16ID:L/F3nxmer
原因が少しわかりました
get_posts()は取得した投稿データを配列として返すのに対し、WP_Queryクラスを利用した場合は、データベース検索の条件やその結果がデータとして保持されるため、ループ内での条件分岐など、より高度なサブループの制御が可能です。

昨日書いたコードは$args = array()を2度分けて書いていたこと、
$posts_array = get_posts( $args );で投稿内容の取得をしているのに対し、
$the_query = new WP_Query( $args );でページナビの内容を取得しているので、

ひもずけされておらずページ番号と内容がマッチしておらず2ページ目をクリックしても内容のリロードができてませんでした。
一つ聞きたいのは、
WP_Queryとget_postsの違いは何でしょうか?
投稿内容をページナビ付きで表示する場合WP_Query() get_thumnailとかで投稿画像など取得できるのでしょうか?
2021/07/11(日) 02:17:32.48ID:lZiRxAj00
WordPress の質問ですか?
WordPressの事なら、Web制作管理板のWordPressのスレに書き込んでください!

5ch はマルチポスト禁止だから、
同じ質問を、複数のスレに書くのは禁止!

このスレではなく、WordPressのスレの方で聞く方がよい
438デフォルトの名無しさん (オッペケ Sra1-AlcT)
垢版 |
2021/07/12(月) 01:09:59.12ID:cRbCoWRWr
https://teratail.com/questions/348616
何とか作り上げることができました。
頭痛いのでねます。
2021/07/12(月) 16:45:41.95ID:ihSDWtOf0
Po@「
2021/07/12(月) 17:49:52.30ID:ZPBMd6Y/0
>>439
コラコラ
441デフォルトの名無しさん (スププ Sd43-pM4a)
垢版 |
2021/07/12(月) 22:17:47.32ID:SYagZpGJd
アップロードされた画像をconstで定義されてるパス先に移動させたいんですが上手く出来ないので教えてください
move_uploaded_file($upload_file['tmp_name'],DIR_IMG.$new_file_name);

DIR_IMGには相対パスが入ってます('../img/など)
2021/07/13(火) 13:02:35.06ID:I15vJP3h0
そもそもアップロードされたファイルなのかどうか
is_uploaded_file()でチェック出来る
そうじゃないならrename()使え

その相対パスあってる?
realpath()で確認してみる

相対パスがあってたとして、パーミッションチェックした?
443デフォルトの名無しさん (ワッチョイ 2342-6Mb1)
垢版 |
2021/07/14(水) 19:07:13.52ID:dWCeWde70
$fruits = array(
'banana' => 'yellow',
'apple' => 'red',
);

$coffee = 'cocacolla:geogia';

function morning($fruits,$coffee) {
$fruits['strawberry'] = 'red';
$coffee = 'suntory=boss';
return $fruits;
}

$fruits = morning($fruits,$coffee);

var_dump($morning);
echo '<br>'.$coffee;

?>


すいません。
phpでは、他の言語のように、関数外で定義された変数も
関数内では有効ではないのですね。。
で、関数外で定義された変数は、引数で受け取り、
returnで返すと、有効になることもわかりました。
=という認識であっていますか?

では、更新したい変数が2つあった場合どのようにすればいいでしょうか?
たとえば、上でいうところの$coffeeを更新したいのです。
444デフォルトの名無しさん (ワッチョイ 2342-6Mb1)
垢版 |
2021/07/14(水) 19:09:54.91ID:dWCeWde70
訂正::すいません。
×var_dump($morning);
〇var_dump($fruits);
2021/07/14(水) 19:40:05.21ID:b60WN8TB0
グローバル変数なら別にスコープ関係無い筈だがそれ前提は設計的にどうかと思うので
以下の方法のどちらかを使う方が良いだろう

参照で渡す
function test(&$a) {
$aへの代入は関数で渡した変数に及ぶ
別にreturnする必要は無い
}

複数の結果をリターンする
function test2()
{
return [1,2];
}

list($a,$b) = test();
$aと$bに結果が入る
446デフォルトの名無しさん (ワッチョイ 2342-6Mb1)
垢版 |
2021/07/14(水) 20:25:55.80ID:dWCeWde70
よくわかりました。
関数外に変数を定義したからといって、
global変数になるわけじゃないんですね。
ありがとございました。

参照渡しか、global変数の定義か、どちらかでやっていきます。
2021/07/15(木) 00:16:59.54ID:gFOIdhYR0
Ruby も珍しく、厳格な関数スコープ。
関数外の変数を、関数内で参照できない

引数渡しか、クラス・モジュール化して使うなどする
2021/07/15(木) 14:33:47.08ID:Hy5PN9MF0
>>446
まず「スコープ」という概念について勉強しよう
https://www.php.net/manual/ja/language.variables.scope.php

それが理解できたら次は「グローバル空間」について
https://www.php.net/manual/ja/language.namespaces.global.php

それが理解できたら次は「名前空間」について
https://www.php.net/manual/ja/language.namespaces.php

今は野球のルールを知らないのに野球やってる状態
PHPマニュアルは優秀だから大抵の事は書いてある
最低限のルールは覚えよう
2021/07/15(木) 14:39:40.15ID:Hy5PN9MF0
>>441
その質問には超能力者しか答えられない

とりあえず、以下を参考にエラーを出力させよう
https://qiita.com/fallout/items/31f793708b243033fab1

次に、そのエラー内容をきちんと読もう
中学レベルの英語力で読めるので

そのエラーを読んでも意味が理解できないなら、エラー内容を転載して質問
俺らはエスパーじゃないw
2021/07/15(木) 20:53:46.77ID:jGrj3A7F0
>>443
なんとなく設計がよくない気がする
$fruits、$coffeeは、別々の関数で処理させて、returnはそれぞれ1つの方がよいと思う
無理にまとめると関数の独立性を損ねるし、それに参照渡しもlist関数も直感的でなく可読性が落ちる
451デフォルトの名無しさん (ワッチョイ 5a42-E0YB)
垢版 |
2021/07/17(土) 05:15:45.31ID:YBqRFemK0
>>449
妙にしっくりきます。
長年ソフトボールに慣れ親しんで、
野球も似たようなもんだろ。って参加したら
両者の違いにやっと気づいて、苦悶する状態w
452デフォルトの名無しさん (ワッチョイ 5a42-E0YB)
垢版 |
2021/07/17(土) 05:18:10.65ID:YBqRFemK0
>>449ではなくて>>448
すまそ。
453デフォルトの名無しさん (オッペケ Sr75-VsZy)
垢版 |
2021/07/17(土) 18:21:09.31ID:ohkviaGsr
指定画像を出力したうえでメニューを作りたい
<php
header('Content-Type: image/jpg');
readfile('uploads/2021/07/7mgpH3K.jpg');
>
で画像の取得はできたのですが、
html文を続けて出力するとエラー
php文を続けても画像しか表示されません。
おそらく器しかなく受け皿のhtmlがないので画像ファイルとして認識されてしまっているのが原因だと思います。
<php
header('Content-Type: image/jpg');
readfile('wp-content/uploads/2021/07/7mgpH3K.jpg');
>
のあとに続けて画像 画像 メニュー 画像とへっだーナビ風に<table>にしたい場合どうすればよいでしょうか?
454デフォルトの名無しさん (オッペケ Sr75-VsZy)
垢版 |
2021/07/17(土) 18:25:44.28ID:ohkviaGsr
画像が画面いっぱいに表示されるということは別のファイルに出力するということですかね、
複数表示してcssを付与するのはどうすればよいのでしょうか?
2021/07/17(土) 18:54:11.12ID:UtbSZ1Qtd
htmlの中にtable出力、その中でimg要素をsrc属性を付けて複数指定する。ブラウザはsrc属性付きのimgのイメージを自動的に読み込む。
456デフォルトの名無しさん (オッペケ Sr75-VsZy)
垢版 |
2021/07/17(土) 20:16:21.59ID:ohkviaGsr
>>455
すみません、過去の質問を頼りに画像出力について検索したのですが、https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1344620588

PHPで画像データを読み込んで出力する場合は、IMGタグを
<IMG src="ooo.php?img=gazou.png">
PHPは
if($_GET['img']){
print file_get_contents($_GET['img']);
exit();
}
のようにします。

とありますが、<img src="img.php?img=uploads/2021/07/7mgpH3K.jpg">で
img.phpの中のuploads/2021/07/7mgpH3K.jpgを出力するとしても画像が出力できません。
何が原因でしょうか?
2021/07/17(土) 21:00:58.68ID:UtbSZ1Qtd
>>456
スラッシュをエスケープするにしてもその書き方は任意のパス名を受け入れるから危険だよ。
458デフォルトの名無しさん (アウアウクー MM35-VsZy)
垢版 |
2021/07/17(土) 21:34:37.90ID:OaBiTcJcM
>>457
画像を呼び出す場合<img src="/header_image.php">のようにphpスクリプトを呼び出して、そのphpスクリプトが画像データを返すようにすべきです。
と言われたのですがほかに方法はあるのでしょうか?
2021/07/17(土) 21:38:04.55ID:xmQE+uIu0
<img src="img.php?img=uploads/2021/07/7mgpH3K.jpg">
じゃなくて、

<img src="uploads/2021/07/7mgpH3K.jpg">
じゃないの?

まあでも、ユーザーから送られたものを、チェック無しに、そのまま使うのは危険!
そこに、色々なファイルパス・命令などを入れてくる
2021/07/17(土) 22:23:28.15ID:UtbSZ1Qtd
パス名じゃなくてもっと制限された情報を渡す。
461デフォルトの名無しさん (オッペケ Sr75-VsZy)
垢版 |
2021/07/18(日) 12:58:29.71ID:VnC3iq6Ar
>>459 >>460
ユーザーからおくられたものではなく自身のサイトのサーバーに置いた画像を指定して任意の場所に表示させ、メニューを作りたいんですがその場合
<img src="uploads/2021/07/7mgpH3K.jpg">でいいのでしょうか?
<table>にして画像 画像 メニュー メニュー 画像としたいんですが、phpを使わなければならないと勝手に認識してるんですが
2021/07/18(日) 13:23:08.70ID:A0aXocf00
HTMLでアクセス可能なPathなら、だが
ハッキングされそうで怖いな
2021/07/18(日) 14:04:59.57ID:fBmvBk7Y0
そもそもアップロード先フォルダだとしてそれをそのまま公開するのは頭がおかしい
PHP以前の問題
本来ならアップロードした時点でファイルを調べて、それでOKであれば
(例えばちゃんと画像ファイルなのかどうか等)
公開フォルダへコピーするなりするべきじゃね?
2021/07/18(日) 15:55:22.55ID:Th1fsKvf0
アホばっかりw
465デフォルトの名無しさん (アウアウウー Sa39-hwij)
垢版 |
2021/07/18(日) 16:44:58.59ID:UQ3hWlPAa
セキュリティ的に危ないという理由を教えてください
一度サーバーのフォルダにアップしたものを公開するのは危ないのでしょうか?
2021/07/18(日) 17:23:13.71ID:ca/UjVuI0
>>465
セキュリティはちゃんと体系的な知識を身につけたほうが良いですよ
一応アップロード系の用語がそれなりに出てくる記事をリンクしておきます

https://qiita.com/mpyw/items/939964377766a54d4682

記事中の実装は、今となっては古すぎなので参考になりませんが、用語レベルでは網羅されているかと
入り口の記事として読んでください

外部からアクセスできる場所にアクセス・実行できるファイルを一個置かれただけで、かなりのことができるようになります
2021/07/18(日) 19:10:00.86ID:NSPuFPL00
RubyガイジとWPガイジはスルー推奨
2021/07/18(日) 19:37:42.84ID:gO2R7Orx0
>>453
header関数で画像データを指定してるんだからhtmlが出力されるわけない
何のためにわざわざheaderなんか指定してるのか不明
HTTPヘッダについて調べた方がいい
2021/07/18(日) 21:08:39.36ID:H/NN8O820
セキュリティーは、膨大な種類ある

だから皆、Ruby on Rails などのフレームワークを使う。
素の言語では、一生やっても作れない

Rails では、サーバーへプロフィール画像をアップロードする、機能がよく出てくる。
画像ファイルの縦横幅の制限、容量の制限、
中身にウイルスがうめこまれていないかチェックするなど、
色々なセキュリティー対策をしないといけない

さらにレスポンシブ対応で、様々なサイズに拡大縮小するなど、
OSS のモジュールを使わないと作れない

一々、自分で作っていては、一生掛かる。
Railsなどのフレームワークの勉強をしていない人は、絶対にシステムを作れない

他にも、マスアサインメント・SQL インジェクションとか、
セキュリティーには膨大な種類ある

だから、PHP のサイトばかり攻撃されるのは、
セキュリティーを知らない人が作っているから、情報を取りやすい
2021/07/18(日) 21:53:44.27ID:6mAUoTwKM
PHPのフレームワーク使うならLaravelだね
2021/07/18(日) 22:51:51.23ID:adePGcGm0
マルチポストには激おこするルビー君
2021/07/18(日) 23:11:24.32ID:g0bWf1Ea0
激おこなんていうJK用語をナチュラルに使いこなしているのがすごい
2021/07/18(日) 23:42:29.55ID:A0aXocf00
JK用語なの?
おじさん、普通に使ってた
2021/07/20(火) 01:13:58.90ID:kSAF0CCr0
アラフォーだけど、使うって感じじゃなくて…
ジェネレーションギャップかも
475デフォルトの名無しさん (アウアウクー MM35-VsZy)
垢版 |
2021/07/20(火) 17:18:42.82ID:IgegoDKDM
以前質問させていただいた画像を直接上げてはいけない原因を調べたところ、
誰からもWebサーバを介してファイルにアクセスできないようにしておいて、ファイルの表示はプログラムを使ってアクセス制御をしながら表示する

つまり通常Webで画像を表示する場合、imgのsrc属性に画像が置いてあるURLを指定するというのが一般的だと思います。
しかし、画像を置いてあるURLを指定するというのは、画像を表示するためにはそのURLにアクセスできるということを表しています。

そこで画像をbase64化
画像をHTMLやCSSに埋め込める(直接記入出来る)ようにする為に、画像をbase64にエンコードします

<php $img = base64_encode(file_get_contents('画像URL')); ?>
<img src="data:image/png;base64,<php echo $img; ?>">

参考URL
https://www.tmp1024.com/php-image-showing/
https://9-bb.com/?p=3591

これで大丈夫でしょうか?画像は表示されました。
476デフォルトの名無しさん (ワッチョイ 058c-p0fO)
垢版 |
2021/07/22(木) 13:17:48.55ID:pnEPB7fm0
質問お願いします。
環境はWindows10でXAMPP7.4.21です。

exec('ipconfig', $message);

上記のPHPに、ブラウザからアクセスした場合、$message[1]が
「Windows IP 構成」と、日本語ですが、
Batファイルで、「c:\xampp\php\php.exe d:\www\test.php」で実行した場合、$message[1]が
「Windows IP Configuration」と、英語です。

PHPが5の時はどちらも日本語だったのですが、XAMPPのアップデートでPHPが7になったらこの現象が起きました。

Batの時にも日本語にするためには、なにをしたら良いでしょうか。
どうぞよろしくお願いいたします。
477デフォルトの名無しさん (アウアウクー MM35-Hsms)
垢版 |
2021/07/22(木) 15:43:09.09ID:b8/cFbDKM
>>463
言ってる意味がおおよそ理解できたのですが。
・暗号化
 可逆な存在
 =複合することができる
 =変換方式が決まっているため、だれでも復元(decode)できる。

可逆な存在といえば「Base64」
エンコード(暗号化)も出来るし、デコード(複合化)もできる。
(でもね、厳密には暗号化=エンコードとは言えないんだよ…)
(詳しくはもう少し下で…)

逆に、不可逆な存在といえば「SHA-1」
こっちは複合化することが出来ない。

画像をハッシュ関数化してそれをもとに画像を表示させる方法がわからないんですが、
phpで可能なんでしょうか?
2021/07/24(土) 10:11:35.97ID:CXOLw81IM
暗号化と符号化の違いがわからなかった時期が俺にもあったなぁ
479デフォルトの名無しさん (ワッチョイ 1389-1sa8)
垢版 |
2021/07/26(月) 09:39:33.21ID:nRSOkyaR0
質問です。
JSONファイルを読み込もうとしたのですがうまくいきません。

$url = "https://f.irbank.net/files/8700/fy-profit-and-loss.json";;
$json = file_get_contents($url);
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$arr = json_decode($json, true);
480デフォルトの名無しさん (ワッチョイ 519b-Hgw+)
垢版 |
2021/07/26(月) 09:43:24.61ID:UUQ7nGaW0
うちはできてる
481デフォルトの名無しさん (ワッチョイ 1389-1sa8)
垢版 |
2021/07/26(月) 09:51:26.23ID:nRSOkyaR0
うう…マジか
XAMPPのローカル環境だから上手く行かないのだろうか?
482デフォルトの名無しさん (ワッチョイ 7bad-0CkY)
垢版 |
2021/07/26(月) 10:38:53.43ID:rdRO2HTr0
せめてエラーログくらい貼りなよ
2021/07/26(月) 11:26:45.16ID:DTdYSzy80
全く読めない

このファイルは、UTF-8 ではない?
484デフォルトの名無しさん (ワッチョイ 7bad-0CkY)
垢版 |
2021/07/26(月) 11:43:48.93ID:rdRO2HTr0
>>479
レスポンスがbrotliで圧縮されてる
そのままブラウザに出力したいだけならContent-Encodingを設定しておくだけ
header('Content-Encoding: br');

jsonとして読み込みたいならbrotliのエクステンションをインストールしてからデコードした上でjsonにデコードする
485デフォルトの名無しさん (アウアウクー MM05-KMlg)
垢版 |
2021/07/26(月) 20:20:23.98ID:BzqZLuZJM
1つ聞きたいんですが画像ファイルのセキュリティについてです。
自分の調べた聞いて理解した範囲では画像を<img src="画像URL">で表示するのは、
画像を表示するためにそのURLにアクセスできるので危険

画像をbase64にエンコードします
デコード(複合化)もできるので意味がほぼないです

サイズとMIMEチェックをして画像を表示させる前に、画像ファイルである事を確認する
必要ならサイズやビット深度を変更する

https://teratail.com/questions/350744で聞くと,
ファイルをアップロードするのは「サイト運営側」だけであれば問題ありません。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13246474913で聞くと、
mineチェックとサイズ変更しなさい、
できればアップロード時のファイル名を元のものから変更する、自サイトのページ内に配置された画像としてしかアクセスを禁止するなどしなさい
結局どれが正解なんでしょうか?
2021/07/26(月) 20:26:04.88ID:B9v6ZV500
>>485
どのようなリソースをどのような攻撃から守るかの仕様が提示されない以上正解はありません
セキュリティポリシーやセキュリティ設計から見直してください
実装を決めるのはその後です
2021/07/26(月) 20:31:09.20ID:7+uo32oc0
>>453
>>485
お前のやりたいことはWordpressの管理画面からアップした画像の表示だろ
そんなもんのセキュリティ気にして変換する奴なんていねーよ
つーかWPスレ池
2021/07/26(月) 21:10:41.62ID:B9v6ZV500
>>487
アップロードは常に気をはれよ
https://www.youtube.com/watch?v=oh1gyuqdcH8
2021/07/26(月) 22:18:00.65ID:7+uo32oc0
>>488
俺に気をはれと言われましてもw
490デフォルトの名無しさん (オッペケ Sr85-KMlg)
垢版 |
2021/07/26(月) 22:31:24.99ID:nQwBFtLMr
>>487
wordpress以外でも同じでしょ?
それに管理画面からじゃなくフォルダのディレクトリに置いたファイルの話なんで画像限定じゃないですね
phpやcssのファイルでも同様かどうか知りたいです
491デフォルトの名無しさん (オッペケ Sr85-KMlg)
垢版 |
2021/07/26(月) 22:44:03.71ID:nQwBFtLMr
画像ファイルのアップロードの時のセキュリティはwordpress関係なく同じでしょ
2021/07/26(月) 22:56:31.97ID:7+uo32oc0
>>491
WPインストールしたらアップロード周りのソース全部読んでセキュリティホール無いことを確認するの?
WPで画像表示する時は表示用PHP作ってbase64変換かますの?
そして、アップロードする時は常に気をはるの?
493デフォルトの名無しさん (アウアウウー Sa5d-XNQa)
垢版 |
2021/07/27(火) 00:25:56.73ID:eUxCT57wa
>>492
そんなことはしませんが、最低限のセキュリティは同じでしょ?
base64じゃセキュリティにならないからファイルを関数化して複雑なファイル名にする
それプラス最低限のセキュリティ、今回は画像なのでMIMEチェック
もし自分以外のユーザーが画像を上げるなら
自サイトのページ内に配置された画像としてしかアクセスを禁止する
word pressだからセキュリティは要らないっていうのはおかしいでしょ
2021/07/27(火) 01:30:32.63ID:7P6684PB0
>>493
>>487 を読み返してください
WPが前提、WPのシステムからアップされたメディアファイルの話し
更に言えば、このスレに住み着いてるWPガイジへのレス(アンカー見ればわかるでしょう)で自分で弄ることが前提
そして事の発端は
>>指定画像を出力したうえでメニューを作りたい
だからね?


>そんなことはしませんが
と仰られるように、前のレスの質問にNoと言うことはWPのシステムのセキュリティをある程度信頼してるわけですよね
この件ではそれで十分だろうと言う話ですよ

セキュリティの一般論の話なんてしてませんよ
2021/07/27(火) 01:51:04.21ID:sIvc9ZAG0
ここはPHPの質問をするスレ
WPの質問なら移動してください
2021/07/27(火) 04:39:04.62ID:x4yitIm80
Word Press の質問は、web制作管理板のスレの方へ移動してください!

Laravel のスレも、この板に立てている香具師がいる。
Laravelの質問は、WEBプログラミング板の方へ!
2021/07/27(火) 06:50:44.81ID:L674X5NC0
>>496
お前が言うな
Rubyバカ
2021/07/27(火) 07:09:26.40ID:CFpUohJoM
WPスレにいる者だが絶対こっち来るなよ
ガイジ過ぎて手に負えんわ
2021/07/27(火) 08:14:32.01ID:SyBbAbx40
質問は>>485であってwordpress関係ないだろ
>>487が勝手にwordpressだって決めつけてる
質問も意味不明だけどね、何を聞きたいのか簡潔にしてほしい

> つーかWPスレ池
お前がいけよw
500デフォルトの名無しさん (ワッチョイ 2954-p8kO)
垢版 |
2021/07/27(火) 09:02:44.68ID:opDlelu60
るびースレに行ってもらえば万事解決するんじゃないかな
2021/07/27(火) 09:30:06.62ID:7P6684PB0
>>458 の質問者は少し前のWPのページネーションの奴だし、そいつは更に前のRSSの奴でもある
ってことでこのスレに住み着いてるWPガイジであることは確定なんですわw
何が気に食わないのか知らんけど残念だったねwww
https://teratail.com/users/homepage-site#question
2021/07/27(火) 10:01:53.85ID:DZV4D5nN0
>>493
セキュリティと権限をごっちゃにしてそう
2021/07/27(火) 15:53:11.92ID:Dog97BpdF
>>495
ほんそれ
2021/07/28(水) 10:44:10.50ID:5Wbud5da0
>>485
関連レスをザッとだけ読んだけど、スレ回答者の中にもおかしな事を言ってるやつはわりといる
いちいち指摘してたらキリないから割愛するが、スレ回答者の皆が実務経験豊富なプロってわけじゃないからなぁ…

でもお前さんも、自分が「思い込みが激しくて頭が固いタイプ」だって事は自覚しよう
rssの質問のときも、print_r($rss); とするだけで理解できる筈の事を理解できず、質問を繰り返してたでしょ?
だからスレが荒れるんだよ? 分かる?
2021/07/28(水) 10:44:53.11ID:5Wbud5da0
>>485
で、元の質問は>>453でしょ?
画像を出力するコードの中にHTMLを出力すれば、意図した結果にならないのは当たり前

普通は「画像出力専用のPHP」を用意してこうやる
<img src="output_image.php?id=12345">

そして「HTMLを出力するPHP」の中で下記のようにすればいいだけ
<html>
<body>
<img src="output_image.php?id=12345">
</body>

こういう発想ができないのは、頭が固い証拠


どうしても1つのPHPファイルの中で、画像の出力とHTMLの出力とを同時に行いたい場合はこうする
echo '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('img/abc/123.jpg')) . '">';
要するに、画像(バイナリデータ)をbase64でエンコードし「文字列(テキストデータ)として出力」すればいい(インラインイメージと呼ぶ)

これに「セキュリティ的な意味はほぼない」ので、勘違いしないよう
インラインイメージで画像を出すかどうか?ってだけ

まぁこんな事をやってもメリットなんか無いから、普通は「画像出力専用のPHP」を用意する
2021/07/28(水) 10:46:52.30ID:5Wbud5da0
>>485
>>505に書いたoutput_image.phpの仕様がもし
output_image.php?path=img/abc/123.jpg
のように、画像のパスを渡したらその内容をそのまま表示するとなっていた場合、「パストラバーサル」と呼ばれる脆弱性が発生する危険性がある

例えば、pathの値が「img/../../../secret.txt」だった場合、意図せずsecret.txtの中身が第三者に読まれてしまうって事ね
だから、そうならないようpathの値をしっかりチェックしないといけないのだけど、一連の質問を見ている感じ、あなたにそれを自前でやるのは無理だと思う

なので、「ファイルパスを渡す」のではなく、最初の例のように「画像を識別できるIDを渡す」ようにすればいい

※?path= で値を受け取るPHPをインターネット上に公開し、ログを取ってみるといい
※笑うぐらい攻撃があちこちから飛んでくるのが確認できるから
2021/07/28(水) 10:50:19.40ID:5Wbud5da0
>>485
最後に

アップロード処理が管理者にしかできない = 第三者に変なファイルをアップされる心配がないのであれば、
<img src="img/abc/123.jpg">
で別にええのよw

img/abc/123.jpg というファイルパスを第三者に知られたくないなら、>>505の例のように「間にPHPをかまして出力」すれば良いってだけ


逆に、第三者に変なファイルをアップされる心配があるのであれば、「アップロード処理の際に(出力の時ではなく)」厳密なチェック処理をしないとダメ

それについては、>>466さんも紹介してくれている
https://qiita.com/mpyw/items/939964377766a54d4682
を読めばいい

・第三者が自由にファイルがアップロードできる
・アップロード処理の際に上記のようなチェック処理ができてない
・アップロードされたファイルへ第三者がアクセスできる

3つの条件を満たしているとセキュリティ的にヤバいよねってだけ
例えば、「任意のファイルを自由に読み書きできるPHPファイル」をアップロードしそれがそのまま実行できたらヤバいでしょ?
分かる?
508デフォルトの名無しさん (ワッチョイ 0bba-p8kO)
垢版 |
2021/07/28(水) 12:52:23.66ID:9bJDIHUz0
釣り質問にマジレスすんなよアホ
2021/07/28(水) 12:58:32.36ID:pYNLf1nF0
釣りレスですしw
2021/07/28(水) 16:52:40.91ID:5Wbud5da0
>>476
ゴミレスに埋もれて気づかなかったw

PHPの記述を
exec('ipconfig', $message);

exec('chcp 932 | ipconfig', $message);

に変えたら上手くいくと思う
932はCP932(SJIS)の事ね
2021/07/28(水) 16:54:11.72ID:5Wbud5da0
>>479
error_reporting(E_ALL);
ini_set('display_errors', 1);
$url = "https://f.irbank.net/files/8700/fy-profit-and-loss.json";;
$json = file_get_contents($url);
var_dump($json);

ってやったらどうなる?
string(1676) "{"meta":{"type":"\u696d\u7e3e","item":{"\u5e74\u5ea6":["\u58f2\u4e0a\u9ad8",…
みたいなレスポンスが返ってこない?

とりあえず↓の行は要らんでしょ
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');

>>481
関係ない
PHPのバージョンぐらいは書いた方がいいが
512デフォルトの名無しさん (オッペケ Sr85-KMlg)
垢版 |
2021/07/28(水) 20:23:13.38ID:jpPdNADXr
>>507
それをあわせてファイルをチェックするのが
MIMEチェックをして画像を表示させる前に、画像ファイルである事を確認するってことですよね?
画像をecho '<img src="data:image/jpeg;base64,' . base64_encode(file_get_contents('img/abc/123.jpg')) . '">';で表示して
MIMEチェックするのがそんなに難しいことなんですか?
2021/07/28(水) 21:08:58.35ID:IWCDcnnv0
>>510
どうもありがとうございます!
とても助かりました
2021/07/28(水) 22:44:28.91ID:5Wbud5da0
>>512
MIMEのチェックが必要なのは、「第三者が」画像の「アップロードをするとき」の話ね
画像を表示させる前にそんなものは要らない

> MIMEチェックするのがそんなに難しいことなんですか?

PHPでアップロード処理した際、MIMEタイプは $_FILES['hoge']['mime'] に入るんだけど、
それは偽装できる
だからその値は信用せず mime_content_type() などで別途チェックしようってこと

当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい

つかさ、「自分(管理者)しか画像をアップロードしない」のか
それとも「第三者も画像をアップロードする」のか、
まずはそこをハッキリさせるべき

だから回答もめちゃくちゃになる
2021/07/29(木) 05:06:26.04ID:Bm0Z0U0B0
画像データの中に、ウイルスなどを入れてくるかも知れない

だから、本当に画像形式なのか、全バイト調べる必要がある
2021/07/29(木) 05:43:31.56ID:4AVEtKuA0
>>514
> 当たり前だが、自分しかアップロードしないならそんなチェックはしなくていい

これ、管理画面からしか画像アップロードを許さないって状況を言ってるんだと思うけど、その場合もちゃんとチェックすべき
他の脆弱性と合わせて管理者権限でアップロードする手口があるので、このへんで手は抜かないほうがいい
2021/07/29(木) 09:05:26.98ID:rmmFdFBh0
自分で変なファイル置いちゃうかもしれんしな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況