簡易掲示板を作りたい、node.js+expressで ⑦色々

色々

思いついたことを色々やっていく。

Helmetを使う

https://expressjs.com/ja/advanced/best-practice-security.html#use-helmet

expressで推奨されてた。

 $ npm install --save helmet

インストールして追記

var helmet = require('helmet')
app.use(helmet())

効果はよく分からない。

https://qiita.com/qianer-fengtian/items/148602c437e1703aa764

とか参照。

Javascriptでhtmlspecialchars

PHP使ったときなんかこんなのあったよなーと思って探してみたら、javascriptではないらしい。なので自分で関数作って対応するそうな。ちょうどStackoverflowに同様の質問があった。

https://stackoverflow.com/questions/1787322/what-is-the-htmlspecialchars-equivalent-in-javascript

function escapeHtml(text) {
  return text
      .replace(/&/g, "&")
      .replace(/</g, "<")
      .replace(/>/g, ">")
      .replace(/"/g, """)
      .replace(/'/g, "'");
}

replaceで一個ずつ置き換えてく。

入力文字数チェック

未入力だの、長いやつを弾く。

if (req.body['user_message'] === '') {
      res.status(400).send('ないようがないよう')
      return;
    }

    if (req.body['user_message'].length > 400) {
      res.status(400).send('ないようがながいよう')
      return;
    }

    if (req.body['user_name'].length > 20) {
      res.status(400).send('なまえがながいよう')
      return;
    }

長さ見てるだけだね。

新しい投稿が上に来るようにする

data.reverse();

こんな簡単なのだな。ただ編集→更新したやつは上に来ない。

日時をGMTにする、形式を変える

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat

こちらに書いてあることを読み解きつつ

function fmtdate(){
  let o = new Intl.DateTimeFormat('jp-JP', {
    weekday: 'narrow',
    year: 'numeric',
    month: '2-digit',
    day: '2-digit',
    hour: '2-digit',
    minute: '2-digit',
    second: '2-digit',
    fractionalSecondDigits: 3
  })

  return o.format(new Date())
}

こんな関数を作った。今まで

2022-01-02T11:50:36.446Z

こんな表示でUTCだったのが

2022/01/02(日) 20:51:07.812

こんな表示でGMTになった。

とりあえず終わり

こんなところかなぁ。あと最終のソース。

カテゴリー: したい, できた タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です