登録日
2014年2月10日

メンバー検索

  

kohki

名前(ニックネーム)
しかたこうき
自分のconcrete5サイト
ホームページ
自己紹介
concrete5.org のユーザー名
concrete5 Slack Team ID
Twitterアカウント
フォーラム総投稿数
279

コミュニティバッジ

WEB 編集メンバー concrete5 のヘルプドキュメント編集を手伝っていただいている方です。どなたでも参加できます。詳しくはconcrete5 コミュニティ活動のお誘いへ。
ローカルグループリーダー concrete5 ローカルグループのまとめ役をしている方です。勉強会やイベントを開催していただけるのであれば誰でもなることができます。詳しくはconcrete5 コミュニティ活動のお誘いへ。

投稿

1から10までを表示 (計279)

オートナビ等のナビゲーションが出力するhrefのURLが、独自ドメインからIPアドレスに書き変わってしまう

お世話になっております。

掲題の通りでございます。
環境は、AWS Lightsailで、1つのインスタンスにアプリとDBが同居している構成です。
インスタンスの雛形は、bitnamiのLAMP Stackを使用しています。
bn-certを使ってSSL化しています。

発生条件がわからないのですが、オートナビやおそらくはページリストなどが出力する、
コンクリ内部のコンテンツページへのリンクが、ドメインからIPアドレス(AWS Lightsail内でアタッチした静的IP)に書き変わってしまいます。
これにより、外部サービスを使ってトラッキングしているユーザー行動が分断される
(別サイトとして認識される?)ため、不便を感じています。
もちろん、ユーザーにとっては突然URLのドメインがIPアドレスになって不信感を抱かせることにもなります。

過去の英語フォーラムにある、
http://archive.concretecms.org/community/forums/usage/links-using-ip-address-instead-of-domain-name-address
これが近いのかと思いましたが、
この英語フォーラムにある.htaccessの書き換えは、プリティーURLのリダイレクトと競合してうまく作動しませんでした。

何か上手い知恵はないでしょうか?

Posted on 8月 31, 2021 at 10:45 午後

Re: 外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

ありがとうございます。
こちら、確認して対応したいと思います。

Posted on 8月 31, 2021 at 10:39 午後

外部フォームでCSRF攻撃されてしまいました【ver8.5.5】

自由度が高く確認画面のあるフォームが欲しくて、外部フォームでお問い合わせフォームを作りました。
ソースコードは以下です。
https://gist.github.com/kohki-shikata/9f7f448240125e174da43bbd5f6c4d9a

ホスティングはAWS Lightsail、メール配信はAWS SESを使いました。
あるとき、AWSから確認のメールがあり、大量にメールが配信されていて苦情率が高いので、
一旦SESのアカウントは凍結すると言うものでした。
大量の問い合わせを受けたわけでは無いので、記憶にないと返答したら
とりあえずフォームの脆弱性を解決しなさい、というお達しがありましたので、
どのように対応すれば良いか御指南いただけないでしょうか。

通常スクラッチでCSRF対策のメールフォームを作る場合は、
入力画面と確認画面、送信画面でそれぞれハッシュ値などを渡すと思うのですが、
菱川さんのブログには、外部フォームはCSRF対策済みとあるので、
特に今回はハッシュ値を渡し合うような仕組みは作らずにいました。
これが不味かったのでしょうか?

Posted on 8月 22, 2021 at 1:37 午前

Re: シングルページから任意の値をデータベースに保存するパッケージを作りたい

すみません、ソースコード貼り付けてたんですが、
サニタイズされてしまいました…

というわけで、Gistに貼りましたので、こちらをご確認ください。

http://gist.github.com/kohki-shikata/6bea69e3c455ad608cc36fbbf2cc2f2d

Posted on 12月 13, 2020 at 7:09 午後

シングルページから任意の値をデータベースに保存するパッケージを作りたい

現在、Youtube APIと接続するブロックとシングルページをパッケージにしようと試行錯誤しています。

YoutubeのIDはブロック側に、APIのキーはconcrete5全体で持たせたいので、シングルページ側からキーを保存させたいと思っています。

シングルページから、コントローラーの保存する仕組みがよくわかっていません。英語のドキュメントなどにも当たりましたが、ずばりこれ、といった記事は見つかりませんでした。

concrete5cojpさんのGitHubに上がっているアドオンの記述などを参考にしながら、以下のコードを書いてみましたが、実行してみると404エラーになります。

concrete5のバージョンは8.5.4、パッケージのインストールは難なく行えました。

データベース保存のロジックも参考になるソースコードがあれば良いのですが、見つかっておりません。ブロックの時は、もう少し簡単だったような気がするのですが…

ヒントがあれば、教えていただきたいです。
よろしくお願いします。

Posted on 12月 13, 2020 at 6:58 午後

Re: さくらインターネット

PHP7.4はconcrete5ではまだ対応できてないのでは?
http://documentation.concrete5.org/developers/introduction/system-requirements


7.4 [with future v9.0 release] [future v9.0 release]

Posted on 10月 09, 2020 at 7:53 午前

Re: 言語ツリーで再スキャンでエラー

おっと、既知のバグでしたか。
リサーチが不足し、失礼しました。
パッチ当てて様子を見てみたいと思います。

Posted on 10月 07, 2020 at 7:43 午後

言語ツリーで再スキャンでエラー

多言語ツリーを作成し、言語ツリーを再スキャンすると、以下エラーが出ました。


{"error":{"type":"Exception","message":"Serialization of 'Closure' is not allowed","file":"\/var\/www\/html\/concrete\/src\/Foundation\/Processor\/ProcessorQueue.php","line":89,"trace":[{"file":"\/var\/www\/html\/concrete\/src\/Foundation\/Processor\/ProcessorQueue.php","line":89,"function":null,"class":"Exception","args":["Serialization of 'Closure' is not allowed"]},{"file":"\/var\/www\/html\/concrete\/src\/Foundation\/Processor\/ProcessorQueue.php","line":89,"function":"serialize","class":null,"args":[{"processor":{},"subject":{"cID":"223","cDisplayOrder":"1","cParentID":222,"level":1,"total":0},"target":{},"task":{}}]},{"file":"\/var\/www\/html\/concrete\/controllers\/single_page\/dashboard\/system\/multilingual\/copy.php","line":52,"function":"process","class":"Concrete\\Core\\Foundation\\Processor\\ProcessorQueue","args":[]},{"file":"\/var\/www\/html\/concrete\/src\/Controller\/AbstractController.php","line":315,"function":"rescan_locale","class":"Concrete\\Controller\\SinglePage\\Dashboard\\System\\Multilingual\\Copy","args":[]},{"file":"\/var\/www\/html\/concrete\/src\/Controller\/AbstractController.php","line":315,"function":"call_user_func_array","class":null,"args":[[{"token":{},"c":{"siteTree":null,"cID":"92","error":false,"pkgID":"0","cPointerID":"0","cIsDraft":"0","cIsActive":"1","cFilename":"\/dashboard\/system\/multilingual\/copy.php","ptID":"0","cDisplayOrder":"1","cInheritPermissionsFrom":"PARENT","cOverrideTemplatePermissions":"1","cCheckedOutUID":null,"cIsTemplate":"0","uID":"1","cPath":"\/dashboard\/system\/multilingual\/copy","cParentID":"90","cChildren":"0","cCacheFullPageContent":"-1","cCacheFullPageContentOverrideLifetime":"0","cCacheFullPageContentLifetimeCustom":"0","cPathFetchIsCanonical":true,"pkgHandle":false}},"rescan_locale"],[]]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/ResponseFactory.php","line":189,"function":"runAction","class":"Concrete\\Core\\Controller\\AbstractController","args":["rescan_locale",[]]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/ResponseFactory.php","line":367,"function":"controller","class":"Concrete\\Core\\Http\\ResponseFactory","args":[{"token":{},"c":{"siteTree":null,"cID":"92","error":false,"pkgID":"0","cPointerID":"0","cIsDraft":"0","cIsActive":"1","cFilename":"\/dashboard\/system\/multilingual\/copy.php","ptID":"0","cDisplayOrder":"1","cInheritPermissionsFrom":"PARENT","cOverrideTemplatePermissions":"1","cCheckedOutUID":null,"cIsTemplate":"0","uID":"1","cPath":"\/dashboard\/system\/multilingual\/copy","cParentID":"90","cChildren":"0","cCacheFullPageContent":"-1","cCacheFullPageContentOverrideLifetime":"0","cCacheFullPageContentLifetimeCustom":"0","cPathFetchIsCanonical":true,"pkgHandle":false}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/DefaultDispatcher.php","line":130,"function":"collection","class":"Concrete\\Core\\Http\\ResponseFactory","args":[{"siteTree":null,"cID":"92","error":false,"pkgID":"0","cPointerID":"0","cIsDraft":"0","cIsActive":"1","cFilename":"\/dashboard\/system\/multilingual\/copy.php","ptID":"0","cDisplayOrder":"1","cInheritPermissionsFrom":"PARENT","cOverrideTemplatePermissions":"1","cCheckedOutUID":null,"cIsTemplate":"0","uID":"1","cPath":"\/dashboard\/system\/multilingual\/copy","cParentID":"90","cChildren":"0","cCacheFullPageContent":"-1","cCacheFullPageContentOverrideLifetime":"0","cCacheFullPageContentLifetimeCustom":"0","cPathFetchIsCanonical":true,"pkgHandle":false}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/DefaultDispatcher.php","line":58,"function":"handleDispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/DispatcherDelegate.php","line":39,"function":"dispatch","class":"Concrete\\Core\\Http\\DefaultDispatcher","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/ThumbnailMiddleware.php","line":76,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\DispatcherDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":50,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ThumbnailMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/FrameOptionsMiddleware.php","line":39,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":50,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\FrameOptionsMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/CookieMiddleware.php","line":35,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":50,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\CookieMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/ApplicationMiddleware.php","line":29,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/MiddlewareDelegate.php","line":50,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\ApplicationMiddleware","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}},{}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/Middleware\/MiddlewareStack.php","line":86,"function":"next","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareDelegate","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Http\/DefaultServer.php","line":85,"function":"process","class":"Concrete\\Core\\Http\\Middleware\\MiddlewareStack","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Foundation\/Runtime\/Run\/DefaultRunner.php","line":128,"function":"handleRequest","class":"Concrete\\Core\\Http\\DefaultServer","args":[{"attributes":{},"request":{},"query":{},"server":{},"files":{},"cookies":{},"headers":{}}]},{"file":"\/var\/www\/html\/concrete\/src\/Foundation\/Runtime\/DefaultRuntime.php","line":102,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\Run\\DefaultRunner","args":[]},{"file":"\/var\/www\/html\/concrete\/dispatcher.php","line":45,"function":"run","class":"Concrete\\Core\\Foundation\\Runtime\\DefaultRuntime","args":[]},{"file":"\/var\/www\/html\/index.php","line":3,"function":"require","class":null,"args":["\/var\/www\/html\/concrete\/dispatcher.php"]}]},"errors":["Serialization of 'Closure' is not allowed"]}


環境は、こちらのdocker-composeでmacOS Catalinaです。
http://github.com/chriswayg/concrete5
Dockerfileの環境変数を変更し、concrete5 8.5.4でインストールしています。

環境情報も付記しておきます。

# concrete5 Version
Core Version - 8.5.4
Version Installed - 8.5.4
Database Version - 20200609145307

# Database Information
Version: 10.5.5-MariaDB-1:10.5.5+maria~focal
SQL Mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

# concrete5 Packages
None

# concrete5 Overrides
None

# concrete5 Cache Settings
Block Cache - On
Overrides Cache - On
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache/2.4.38 (Debian)

# Server API
apache2handler

# PHP Version
7.3.19-1~deb10u1

# PHP Extensions
apache2handler, calendar, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, Phar, posix, readline, Reflection, session, shmop, SimpleXML, sockets, sodium, SPL, standard, sysvmsg, sysvsem, sysvshm, tokenizer, wddx, xml, xmlreader, xmlwriter, xsl, Zend OPcache, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 8M
upload_max_filesize - 2M
mbstring.regex_stack_limit - 100000
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - no value
session.gc_maxlifetime - 7200
opcache.max_accelerated_files - 10000
opcache.max_file_size - 0
opcache.max_wasted_percentage - 5


何かわかると良いのですが。
よろしくお願いします。

Posted on 10月 07, 2020 at 3:59 午後

エイリアスとして作成した外部リンクが削除できない

お世話になります。掲題の通りです。

まず、外部リンクをフルサイトマップで作成しました。
その外部リンクを別のページに移動させ、エイリアスを作成しました。
実は間違えてエイリアスとして作成してしまったため、取り消したいと思い、
フルサイトマップ上で、エイリアスをクリック→削除を選択すると、
削除ダイアログが表示され、右下の赤い削除ボタンを押すと、
エラーという空白のダイアログが出て失敗します。
ブラウザコンソールには


Failed to load resource: the server responded with a status of 500 (Internal Server Error)
http://localhost/concrete5/index.php/ccm/system/dialogs/page/delete_alias/submit?ccm_token=1577263965:fb65ffabb67bbf8eafeb90f154649278&cID=242


と出ます。
その後concrete5自体正常に動作せず、サイトルートを直接叩いてもブラウザのローディングが終わらりません。

Apacheを再起動すれば、その後通常通りにconcrete5が動作します。
ただ、この作業は何度やっても同じ条件で発動します。

まあ、不要な外部リンクがあっても運用で逃げられるので今のところ大きな問題ではないのですが、不要なデータは出来るだけ持ちたくないので、正常に削除する方法を探しています。

よろしくお願い致します。


# concrete5 Version
Core Version - 8.5.2
Version Installed - 8.5.2
Database Version - 20190925072210

# Database Information
Version: 10.4.6-MariaDB
SQL Mode: NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION

# concrete5 Packages
None

# concrete5 Overrides
themes/sightseeingbus/css/layout.css, themes/sightseeingbus/css/layout_3.css, themes/sightseeingbus/css/willer_iconsregular.css, themes/sightseeingbus/css, themes/sightseeingbus/default.php, themes/sightseeingbus/description.txt, themes/sightseeingbus/footer.php, themes/sightseeingbus/head.php, themes/sightseeingbus/thumbnail.png, themes/sightseeingbus

# concrete5 Cache Settings
Block Cache - Off
Overrides Cache - Off
Full Page Caching - Off
Full Page Cache Lifetime - Every 6 hours (default setting).

# Server Software
Apache/2.4.39 (Win64) OpenSSL/1.1.1c PHP/7.3.8

# Server API
apache2handler

# PHP Version
7.3.8

# PHP Extensions
apache2handler, bcmath, bz2, calendar, Core, ctype, curl, date, dom, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, json, libxml, mbstring, mysqli, mysqlnd, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, Phar, readline, Reflection, session, SimpleXML, SPL, standard, tokenizer, wddx, xml, xmlreader, xmlwriter, zip, zlib

# PHP Settings
max_execution_time - 30
log_errors_max_len - 1024
max_file_uploads - 20
max_input_nesting_level - 64
max_input_time - 60
max_input_vars - 1000
memory_limit - 128M
post_max_size - 512M
upload_max_filesize - 2M
mbstring.regex_stack_limit - 100000
mysqli.max_links - Unlimited
mysqli.max_persistent - Unlimited
pcre.backtrack_limit - 1000000
pcre.recursion_limit - 100000
session.cache_limiter - no value
session.gc_maxlifetime - 7200

Posted on 12月 25, 2019 at 5:57 午後

Re: 特定のページのみで、フッター部分を非表示にしたい

結論から言うと、出来ます。

やり方は色々あります。

パっと思いつくのは、その特定のページで
ページ属性「追加ヘッダー要素」にstyle要素を書き、
フッターをCSSでdisplay:none;するのが手っ取り早いです。

そもそもHTMLを出力したくないのであれば、

1)フッターに相当する箇所がブロックでない場合
→フッターを削除したページテンプレートを用意、特定のページに適用する

2)フッターに相当する箇所がブロックで、グローバルエリアに入っている場合
→別のグローバルエリアを作り、1と同じく別のページテンプレートを作成。その後、削除する必要のないブロックだけクリップボードで複製して、挿入。

こういう感じでしょうか。

Posted on 10月 04, 2017 at 7:01 午後
« 前1234567...28次 »