カテゴリー
Linux

【Vagrant】EC-CUBE 3 環境を Mac で構築した時の共有フォルダ mount_options 設定ポイント

EC-CUBE 3 を Vagrant にインストールするとき、次の問題に遭遇しました><。

  • インストールシェルファイルが実行できない。
  • インストールできても、パーミッションの問題で、どんなページでも表示すらできない。

これを解決しましたので、ノートいたします♪

解決できたコードとそのポイント

  • 共有フォルダ・ファイルのパーミッション設定を、ディレクトリは 777、ファイルは 766 とする。
config.vm.synced_folder "synced_folder/ec-cube/", "/var/www/ec-cube",
  create: true, mount_options: ['dmode=777', 'fmode=766']
カテゴリー
コンピューター

【OSC2015 Hokkaido】オープンソースカンファレンス2015 Hokkaido のスライド、ブログ、周辺情報ページのまとめ♪ #osc15do

OSC2015 Hokkaido 6/13(土)2日目に参加しての感想メモ♪ | oki2a24 の最後で拾位集めましたオープンソースカンファレンス2015 Hokkaido のスライドや関連ページを後学のためにまとめましたの。

  • 時系列に並べて
  • スライドはできるだけ埋め込んで
  • スライドに限らず動画や感想や Twitter まとめも可能な限り網羅して

以上を心がけました。

カテゴリー
コンピューター

OSC2015 Hokkaido 6/13(土)2日目に参加しての感想メモ♪ #osc15do

オープンソースカンファレンス2015 Hokkaido – オープンソースの文化祭! に初めて行ってまいりました♪その時に感じたこと、勉強になったことなどをメモしておこうと思います!

追記:なお、スライドなどを自分の勉強のために次のページにまとめました♪

1-1.全体を通して。感じた雰囲気

  • こういう技術を使ってこういうものをつくったよ、こういうことをしたよ、できたよ、苦労したよ、面白かったよ、がわかる。
  • いま、何ができるかが何となく分かるカンファレンス。
  • 男性多い。20代後半〜40代が多い印象。中高学生や、高齢者もポツポツいた。
  • 男性はリュック率が高かった。
カテゴリー
コンピューター

【EC-CUBE】受注ページで数クリックでエクセルに貼れるデータをコピーしたい♪つまり、Chrome ブラウザのコンソールを叩いてJavaScriptでスクレイピングしたい!

本投稿内容を実際に試せる環境

本投稿内容を試すと次のデータが得られます

スクリーンショット 2014-12-31 19.31.01.png

  • 1お届け先1行の形で、お届け先情報、お届け先氏名、購入者情報、購入者氏名、お届日時指定をタブ区切りで出力
  • まとめて選択してエクセルやスプレッドシートに貼り付ければ各セルに別れて貼り付けることができる

本投稿内容を実際に試す方法

カテゴリー
コンピューター

【EC-CUBE】受注 CSV 出力で商品名、届け先都道府県をひとつのセルに全部入れる SQL♪

出力したいものの仕様はこうします♪

  • 「商品名」「規格1」「規格2」,「商品名」「規格1」「規格2」…、という形で 1 回で買った受注の商品をひとつのセルに出力させたい。
  • 北海道,東京都,沖縄県…、という形で 1 回で買った受注のお届け先都道府県をひとつのセルに出力させたい。
  • 商品は小計(dtb_order.subtotal)の前に、お届け先都道府県は配送情報 ID の次に出力させる。

SQL ポイント

  • || 演算子で前後のカラムを文字列結合する。
    文字列関数と演算子
  • NULL を含む文字列を結合すると全体が NULL となる。これを防止するために COALESCE 関数を使用する。COALESCE(column, ”) とすれば column が NULL ならば空文字 ” で、空白で、置き換えられる。
    条件式
カテゴリー
コンピューター

【EC-CUBE 2.12】受注の各商品も出力して CSV ダウンロードを実現する方法♪

受注の各商品も CSV 出力する SQL 文

受注の CSV 出力には、商品名は出力されません。

なぜなら、EC-CUBE の受注 CSV ダウンロードは 1 受注を1 行に出力する仕様でございますもの。

もし、1 回の買物で、複数種類の商品を買った場合、これらの商品をどうやって CSV に出力すればよいかしら?商品すべてを 1 つのセルに書きだすようにすればよいかしら?

できそうですわね!では、それぞれの商品の値段、購入した個数も知りたくなったらどうかしら?ひとつのセルに押し込めるかしら?ムギュウムギュウ♪

素直にはできませんわね><。大変難しいですの!

考え方はいろいろございますけれども、1 行 に 1 商品で出力します。そして、各行にその受注の合計金額など他の情報も掲載します。そのような方法も採れますわ、悪く無いと思いますの。

複雑さが増してしまいますけれども、CSV でしたら エクセルを念頭においていると存じます。まだ現実的な範囲内ではないかしら?

そのようなわけで、これを実現する SQL 文を書いてみましたわ♪

カテゴリー
コンピューター

【EC-CUBE 2.12】受注管理のCSV出力をコンテンツ管理>CSV出力項目設定>高度な設定で実現します!

コンテンツ管理>CSV出力項目設定>高度な設定に設定する SQL 文

実際にフォームに入力するときは、1 行目の SELECT は入力しません。また、最後の 1 文の ; も入力しません。

SELECT
        dtb_order.order_id,
        dtb_order.customer_id,
        dtb_order.message,
        dtb_order.order_name01,
        dtb_order.order_name02,
        dtb_order.order_kana01,
        dtb_order.order_kana02,
        dtb_order.order_email,
        dtb_order.order_tel01,
        dtb_order.order_tel02,
        dtb_order.order_tel03,
        dtb_order.order_fax01,
        dtb_order.order_fax02,
        dtb_order.order_fax03,
        dtb_order.order_zip01,
        dtb_order.order_zip02,
        (SELECT mtb_pref.name FROM mtb_pref WHERE mtb_pref.id = dtb_order.order_pref),
        dtb_order.order_addr01,
        dtb_order.order_addr02,
        dtb_order.order_sex,
        dtb_order.order_birth,
        dtb_order.order_job,
        dtb_order.subtotal,
        dtb_order.discount,
        dtb_order.deliv_fee,
        dtb_order.charge,
        dtb_order.use_point,
        dtb_order.add_point,
        dtb_order.tax,
        dtb_order.total,
        dtb_order.payment_total,
        dtb_order.deliv_id,
        dtb_order.payment_method,
        dtb_order.note,
        dtb_order.status,
        dtb_order.create_date,
        dtb_order.update_date,
        dtb_order.commit_date,
        dtb_order.device_type_id,
        (SELECT count(*) FROM dtb_shipping WHERE dtb_shipping.order_id = dtb_order.order_id),
        (SELECT ARRAY_TO_STRING(ARRAY(SELECT dtb_shipping.shipping_id FROM dtb_shipping WHERE dtb_shipping.order_id = dtb_order.order_id), ','))
FROM
        dtb_order
WHERE 
        del_flg = 0
;
カテゴリー
コンピューター

EC-CUBE 2.12.6 のセッション管理の不備対策、 CSRF 対策を確認しました♪★勉強★

セッション管理の不備、つまりセッション・ハイジャック、セッション・フィクセーションの脆弱性と、クロスサイト・リクエスト・フォージェリ(CSRF)の脆弱性について、EC-CUBE 2.12.6 を対象に見てみました。

結論をまず申し上げますと、「対策はなされていますけれども、わたくしのレベルが低くて充分なセキュリティ強度があるかどうかは結局わからなかった」です。

ウェブ健康診断仕様の 18 ページ、 (K) セッション管理の不備の検出パターン、「1 ログインの前後でセッションID が変化するか」で「セッションID が変わらない場合」に脆弱性ありとしています。

EC-CUBE 2.12.6 を調べてみましたら、会員ログイン時も、店舗管理者ログイン時も、ログイン前後でセッション ID は不変でございました。脆弱性がありますわ!まあ!どういたしましょう!

そう思いつつ、安全なウェブサイトの作り方の対応セクション、16 ページからの「1.4 セッション管理の不備」を拝見いたしますと、■ 根本的解決の部分に次のようにありました。

  • ■ 根本的解決「4-(iv)-a ログイン成功後に、新しくセッションを開始する。」

あら、やっぱり EC-CUBE 2.12.6 には脆弱性があるのでしょうか?もう少し読み込んでみますと、次の対策でも良いとのこと。

  • ■ 根本的解決「4-(iv)-b ログイン成功後に、既存のセッションIDとは別に秘密情報を発行し、ページの遷移ごとにその値を確認する。」

また、同様のことが書籍『体系的に学ぶ安全なWebアプリケーションの作り方』にも記載されております。

  • P181 に、認証後に「セッションIDの変更ができない場合はトークンにより対策する」ことで、「トークンによりセッションIDの固定化攻撃を防御できます」とのこと。

この対策は、EC-CUBE 2.12.6 のログイン機能に施されているでしょうか?調べましたので記録を残しておきます。

なお、セッション管理の不備について調べていくうちに、トークンをページ遷移ごとに確認する方法はクロスサイト・リクエスト・フォージェリ対策にもなることに気が付きましたのでまとめてノートです♪

カテゴリー
コンピューター

EC-CUBE で全ページ HTTPS にするのに mod_rewrite を使いました★YA★TTA★!

Apache の mod_rewrite を使用するので EC-CUBE でなくとも WordPress などのサイトでも SSL に統一することができる設定方法

eccube/html/.htaccess の末尾に次を追加します。

# HTTPS に統一
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
  1. RewriteEngine On → mod_rewrite を使えるようにする
  2. RewriteCond %{HTTPS} off → 条件式に相当。HTTPS がオフだったら次を実行
  3. RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L] → 実行する内容。
    「^(.*)$」を「https://%{HTTP_HOST}%{REQUEST_URI}」に置き換える。
    ^ 行頭、. 任意の一文字、* 直前の文字の 0 回以上の繰り返し、$ 行末。
    [R,L] はリダイレクトした後、変換処理をここで終了する、という意味らしい。。。

ドキュメントは次です。日本語ですけれども(ヤッター)、Apache 1.3 のドキュメントと古いです。新しいバージョンのものももちろんございますけれども、英語でニュービーには辛いですの><。

そもそもなぜ HTTPS に統一しようと思ったかと申しますと、、、

カテゴリー
コンピューター

EC-CUBE で全ページ HTTPS にする簡単な方法を見つけたと思ったけれども DA★ME★DA♪

次の方法で EC-CUBE 2.12.6 の全ページを HTTPS にきると思っていましたが違ったみたいです。。。

  • インストール中であれば、「WEBサーバーの設定」ブロックの「URL(通常)※」「URL(セキュア)※」に指定する URL をどちらも「http」→「https」と修正する。
  • インストール後であれば、data/config/config.php の HTTP_URL および HTTPS_URL の値を「http」→「https」と修正する。

HTTPS_URL に https と入力しますと URL は必ず https になりますけれども、HTTP_URL に https と修正しましても、リンクは https に変更されません。

テンプレートでは HTTP_URL を使用していないのですね。。。たとえばヘッダーのテンプレートを見ますと

<!--{$smarty.const.TOP_URLPATH}-->

となっております。HTTP_URL 使ってませんの!