- 1. Expressの導入
- 2. 脆弱性
- 2.1. OSコマンドインジェクション
- 2.2. XXS攻撃対策についてNode.js Expressでアプリを構築して実例で理解する
- 2.3. Node.jsでTCP/UDPソケットのIPv4・IPv6両対応は簡単に実装できる
- 2.4. Expressを使ったWebサーバーにTLSの設定を追加してみる。
- 2.5. [守] TypeScriptことはじめ
- 2.6. pm2で–tls-min-v1.0オプションを使う
- 2.7. 【2022年版】MacにNodejsをインストールする方法
- 2.8. もろもろ整備されたサンプルプロジェクト作成の手順のまとめ (github + monorepo + nextjs + commitlint + lint-staged + prettier + eslint + editorconfig)
- 2.9. aws-sdk-mock でモック化できない問題が発生
- 2.10. monorepo環境にnextjsを構築する備忘録
[nuxt.js] Amazon Linux2 への Nuxt.js の導入と systemd でのデーモン化
# インストール
## Node.js のインストール
“`bash
$ curl –silent –location https://rpm.nodesource.com/setup_14.x | sudo bash –
$ sudo yum install nodejs
$ node –version
v14.19.0
$ npm –version
6.14.16
“`## vue-cli のインストール
“`bash
$ sudo npm install -g @vue/cli
$ vue –version
@vue/cli 4.5.15
“`## Nuxt.js アプリケーションの作成
“`bash
$ pwd
/home/ec2-user
$ npx create-nuxt-app my-project
“`## Nuxt.js アプリケーションの build と動作確認
“`bash
$ pwd
/home/ec2-user/my-project
$ npm run build
$ npm run start> my-pro
vagrantでNode.js 環境の作成
# 前提条件
vagrantが既に準備してあること# 作業directoryの作成
“`shell:ディレクトリの作成と移動
mkdir my_vagrant_sample
cd my_vagrant_sample
“`
my_vagrant_sampleのところはなんでもいい# 新しいボックスの作成、起動とログイン
“`shell:起動と作成
vagrant init centos/7
vagrant up
vagrant ssh
“`# もしディレクトリの共有をしたい場合
まず共有機能を使うためにはゲスト側にGuest addtionというものをインストールしないといけない。
そのために必要な準備が2つある。1つ目はvbguestというvagrant用のプラグインのインストール
“`shell:vagrant-vbguestのインストール
vagrant plugin install vagrant-vbguest
“`2つ目はゲスト0S側でguest addtionをインストールするためパッケージのインストール。
“`shell:ログイン
Webの勉強はじめてみた その29 〜Webフレームワーク〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回から第4章になります。Expressの導入
Webフレームワークとして、`Express`を使います。
雛形を作るための`express-generator`をインストール“`
yarn global add express-generator@4.16.0
“`テンプレートエンジンを`pug`に設定して、カレントディレクトリに雛形を作成する
“`
express –view=pug .
“``package.json`の中を見ると、`yarn start`で起動できることがわかる。
“`json:package.json
“scripts”: {
“start”: “node ./bin/www”
}
“`Portの設定
“`javascript:www
/**
* Get port from environment and store in Express.
*/var port = normalizePort(process.env.P
Node.jsインストール
“`
curl –silent –location https://rpm.nodesource.com/setup_16.x | sudo bash –
yum install nodejs
““【備考】以前のやり方
“`
yum install nodejs npm –enablerepo=epel
“`#Expressの導入
“`
npm install -g express
“`#Expressの利用
画面にejsを利用“`
express -e ディレクトリ名 -t ejs
cd ディレクトリ名 && npm install
npm install
“`
企業のテックブログの更新をまとめたRSSフィードを作りました!(GitHub Actions)
1つ1つフィードリーダーで管理するのが面倒なので、まとめたRSSフィードを作りました!
[](https://yamadashy.github.io/tech-blog-rss-feed/)
フィードのURLはこちら
“`text:Atomフィード
https://yamadashy.github.io/tech-blog-rss-feed/feeds/atom.xml
“`“`text:RSSフィード
https://yamadashy.github.io/tech-blog-rss-feed/feeds/rss.xml
“`横断的なテックブログのウォッチや、転職先探しなどにご活用ください。
サイトからもフィードURLをコピーでき、直近更新された記事も閲覧できます。
[企業テックブログRSS](https://yamadashy
TypeScriptでfs, pathモジュールがインポートできなかった (Next.js Tutorial)
# はじめに
Next.jsのチュートリアルをTypeScriptでやっていた際に、モジュールが見つからないとVSCodeに言われました。
悲しい。# 問題
**モジュールfsとpathがインポートできません。**
公式チュートリアルのプリレンダリング(SSG vs SSR)の部分で、`posts.js`なるものを作るのですが、自分はTypeScriptでやりたかったため、`posts.ts`としました。
しかし、JSファイルだとインポートできていたモジュールが、TSファイルにするとできなくなってしまいました。困った。“`posts.js:
// 公式のチュートリアルコード
import fs from ‘fs’
import path from ‘path’
“`# 解決策
**`@types/node`をインストールすればよいらしい。**
TS用のモジュールパッケージが入っていない感じなのかな?
理屈はわかりませんが、とりあえず参考ページにあったコマンドを叩く。“`
npm install –save-dev @types/node# 自分はDocke
MongoDBにNode.jsで接続するときの認証について
# やりたいこと
DockerでNodeのコンテナを作成し、MongoDBのコンテナにアクセスしたい。しかし、接続ができない(認証が失敗する)ときがあるので、方法として3種類紹介したいと思います。
Node.js初心者なので書き方がよくなかったり、こんな方法使わんだろと思うかもしれません。ぜひ教えていただきたいです。# 実装について
node: Node.jsのコンテナでMongoDBのコンテナにアクセスしていろいろしたい
mongodb: mongoのコンテナでデータベースサーバ一応、docker-composeファイルを載せておきます。
“`yml:docker-compose.yml
version: “3.8”services:
mongodb:
container_name: “mongodb”
hostname: “mongodb”
image: mongo:5.0.5
restart: always
ports:
– 27017:27017
volumes:
– ./mong
Twitter Spaceの音声をダウンロードする方法
# 環境
デバイス: MacBook Retina 2017
OS: macOS Big Sur バージョン 11.6.1# 必要なソフト
- FFmpeg
- Node.js
- space-dl
# 必要なソフトのインストール
## Homebrewをインストールする
[Homebrew](https://brew.sh/index_ja)のサイトにあるインストールコマンドをターミナルに貼り付け実行する。
インストールスクリプト
“`shell
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`## FFmpegをインストールする
Homebrewを使うことで以下のコマンドで簡単にインストールすることができます。
“`shell
brew install ffmpeg
“`## Node.jsをインストールする
[Node.jsダ
HerokuでMySQLを利用した際に接続が勝手に切れる仕様の修正方法
#HerokuでMySQLを利用した際に接続が勝手に切れる仕様の修正方法
HerokuにNode.js用のアプリをデプロイした際に詰まったので備忘録として投稿します。
※おそらく自分のやり方は結構ごり押しなのでしっかり記事を読んでから使うことをお勧めします。“`Node.js
function intervalFunc() {
connection.query(
‘INSERT INTO users(name) VALUES (“Connection”)’,
(error,results) => {
})
connection.query(
‘select name from users order by id desc limit 1’,
(error,results) => {
if(results[0].name=”Connection”)
connection.query(
‘DELETE FROM users order by id desc limit 1 ‘,
(error,results) => {
req.bodyに変数を用いる方法
#req.bodyに変数を用いる方法
`req.body.○○`の○○の部分に変数を用いようとした際に少し詰まったので、備忘録として投稿します。“`Node.js
//req.bodyの後に入れたい変数を宣言
var bangou
for (let i = 1; i < 10; i++) { //自分の場合はreq.body.bangou_1~10の中身がyesの時だけに処理を通しています。 bangou = "bangou_"+i; //req.body[変数]("."は記述しない)と記述することでreq.bodyの後に変数を用いることが出来ます。 if(req.body[bangou] === "yes"){ console.log("通過"); }else{ continue; } } ``` #結論 以上のコードの7行目のように記述することでreq.bodyの後に変数を用いることが可能でした。
Webの勉強はじめてみた その28 〜脆弱性の対策〜
N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章27〜34節です。脆弱性
OS コマンド・インジェクション
– 任意の OS のコマンドを実行できてしまう
SQL インジェクション
– 任意の SQL というデータベースを操作するコマンドを実行できてしまう
ディレクトリ・トラバーサル
– 任意のファイルを閲覧、操作できてしまう
セッションハイジャック
– 利用者のセッションが乗っ取られてしまう
クロスサイト・スクリプティング (XSS)
– スクリプトにより Web サイトの改ざんができてしまう
クロスサイト・リクエストフォージェリ (CSRF)
– 利用者の意図しない操作がされてしまう
HTTP ヘッダインジェクション
– 偽ページの表示などができてしまう
クリックジャッキング
– 利用者の意図しないクリックをしてしまうこれを見ただけでもフレームワークの必要性がわかる。
OSコマンドインジェクション
:::note warn
当人ではなく、Webサービスが実行者になってしまう。
ク
XXS攻撃対策についてNode.js Expressでアプリを構築して実例で理解する
## はじめに
Node.jsのExpressでテンプレートエンジンejsを使って実装するWebアプリを実例に、XXS攻撃を受ける脆弱性がある状態と対策を講じた場合の実装を見ていく事で、XXS攻撃について理解を深めてみようと思う。## XXS(クロスサイト・スクリプティング)攻撃とは?
Webアプリケーションにスクリプト等を埋め込むことが可能な状態になっている=脆弱性がある時に、これを利用されて利用者のブラウザ上で不正なスクリプトが実行されてしまう可能性がある。
そのスクリプト等を埋め込むような攻撃をXXS(クロスサイト・スクリプティング)攻撃という。詳細は以下のサイトを参照。
https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_5.html
以下ではNode.jsのExpressでテンプレートエンジンejsを使った実装を例に、実際に脆弱性がある実装をやってみて、脆弱性がある時どのような事が起きるのか?またそれを防ぐためにどうするのか?をみていく。
見ていく内容としては、IPAのサイトに書かれている対策の一覧に書か
Node.jsでTCP/UDPソケットのIPv4・IPv6両対応は簡単に実装できる
初投稿です。
# 経緯
Node.jsでUDP双方向通信プログラムを書いている上で何故だか急にIPv6対応したくなってきました。しかし、IPv4の方が未だ多く使用されているため、IPv4を捨てることもできず、IPv6と両方対応できるソケットはないか探してみました。
# TL; DR
## UDP
まずソケットをudp4からudp6にします。
“`js
const socket = dgram.createSocket(“udp4”);
“`
“`js
const socket = dgram.createSocket(“udp6”);
“`そして、待受アドレスを`0.0.0.0`から`::`に変更します。
“`js
socket.bind(PORT, “0.0.0.0”);
“`
“`js
socket.bind(PORT, “::”);
“`これだけです。
こうすることでIPv4・IPv6両対応のソケットを立てることができます。## TCP
プログラムの書き換えは必要ありません。
接続先アドレスをIPv6に指定するだけで勝手にIPv6で接
Expressを使ったWebサーバーにTLSの設定を追加してみる。
Node.js Expressを使って開発していたWebサーバーにSSLの設定を追加できたのでその方法について投稿いたします。
### 流れ
1. OpenSSLのインストール
2. 秘密鍵とSSL証明書ファイルの作成
3. サーバー設定ファイルにTLS有効化の設定を追加### OpenSSLのバージョンについて
OpenSSLのバージョンは、LibreSSL 2.8.3 で設定いたしました。ソースコードとプルリクエストについては、下記の通りです。
ソースコード
プルリクエスト### 1. OpenSSLのインストール
まずは、OpenSSLをインストールします。
Mac OSなら下記コマンドでインストールします。
brew install openssl
### 2. 秘密鍵とSSL証
[守] TypeScriptことはじめ
## はじめに
対象はTypeScript初学者(私)。TypeScript開発において必要最小限のコマンドや手順を備忘としてまとめておきます。「[WEB+DB PRESS Vol.117 / 実践投入TypeScript](https://gihyo.jp/magazine/wdpress/archive/2020/vol117)」を参考とさせていただきました。「もっとこうするとよいよ」のようなものがあればコメントいただけると嬉しいです。
※本記事記載のコード、コマンドの最終検証日は2022/02/05、実行環境のNode.jsはv16.13.2、TypeScriptコンパイラはv8.3.2。
## 開発環境を整備する
### 前提条件
– Node.jsがインストールされていること
### 実行手順
プロジェクトのホームディレクトリを整備後、Node.js環境を初期化、TypeScript開発に必要最小限のnpmパッケージをインストールし、TypeScriptコンパイラの設定ファイルを生成します。
“`sh
pm2で–tls-min-v1.0オプションを使う
タイトルの通りです。
ネット上に情報があまりないようなので共有します。~~~
node –tls-min-v1.0 app.js
~~~
で実行しているjsをpm2で使う方法は以下の通りです。~~~
pm2 start app.js –name app –node-args=”–tls-min-v1.0″
~~~
これで起動しておけば、~~~
pm2 restart app
~~~
で再起動しても「–tls-min-v1.0」オプションは有効のままです。
【2022年版】MacにNodejsをインストールする方法
# はじめに
M1チップのMacbookでNodejsをインストールする方法をまとめた# Homebrewをインストール
“`
/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”
“`
※Homebrewをインストール済みの方は次の手順へhttps://brew.sh/index_ja
インストール後は、次のコマンドでbrewコマンドが使えることを確認
“`
brew -v
“`
コマンドが使えない場合は下記参考https://qiita.com/wooooo/items/6d8a7de5ffafed1cc66c
# Nodebrewのインストール
“`
brew install nodebrew
“`インストール後は下記のコマンドでバージョンを確認
“`
nodebrew -v
“`続いて下記のコマンドを実行
“`
nodebrew setup
“`下記のコマンドを実行し、Nodejsをイ
もろもろ整備されたサンプルプロジェクト作成の手順のまとめ (github + monorepo + nextjs + commitlint + lint-staged + prettier + eslint + editorconfig)
## 環境構築からプロジェクト作成まで
自分でnextjsのプロジェクトを作るとなった際に、どうやってセットアップしたらいいかわからない、という声が多かったので、一例として[このプロジェクト](https://github.com/taijusanagi/nftcert)のセットアップ手順を各記事ごとにまとめてみました、
### github repository
まずはgithub repositoryを作ります。
https://qiita.com/taijusanagi/items/f71a088983fa08637fe1
### husky
次にhuskyの設定を入れます
https://qiita.com/taijusanagi/items/bd44d32efdba980f3f20
### commitlint
次にcommitlintの設定を入れます
https://qiita.com/taijusanagi/items/4117e9c621186b254a9f
### yarn monorepo
次にmonorepoの設定を入れます
https:
aws-sdk-mock でモック化できない問題が発生
実務でLambdaのコードの単体テストをしていて、aws-sdk-mockを使ってDynamoDBへのアクセスをモック化しようとしてもモック化されず困ったのですが、先輩に解決していただいたので、詰まった原因をシェアします。
##テスト環境
– MacOS 11.6.2
– NodeJS v16
– jest v27.4##ソースコード
以下の記事を参考にして書きました。– [【AWS】aws-sdk-mockでLambdaテストを行う](https://makky12.hatenablog.com/entry/2020/12/25/070000)
コード
“`put.js
const AWS = require(‘aws-sdk’);
const docClient = new AWS.DynamoDB.DocumentClient();
AWS.config.update({“region”: “ap-northeast-1”});
exports.handler = async (event) => {
return await Promise.all(
monorepo環境にnextjsを構築する備忘録
## nextjs
nextjsはreactのフロントエンドの開発フレームワークです。
今回は[こちらのプロジェクト](https://github.com/taijusanagi/nftcert)をセットアップする際に、nextjsの構築をおこなったので、備忘録として残します。
## 注意
こちらの記事でmonorepoを設定した後にnextjsを導入しました。
https://qiita.com/taijusanagi/items/cfd6ff7ba72e65439b66
monorepo環境下で実行すると下記のようなエラーが出ました。
“`
warning Missing version in workspace at “/Users/taijusanagi/Documents/workspace/taijusanagi/nftcert/packages/frontend”, ignoring.
error An unexpected error occurred: “Cannot read property ‘manifest’ of undefined”.
`