⚡️
Next.jsにeslint-plugin-securityを導入してみた
eslint-plugin-security とは
セキュリティ的に脆弱性になりそうなところを静的解析してくれるライブラリです。
具体的にどういうことを検知してくれるのかは、本家ページを見てみてください。
なにがいいの?
脆弱性診断ツールを使うなどによって脆弱性そのものを検知することは可能です。
しかし、ツールを使った診断はプロダクトがある程度形になってから行われるものであり、
そのタイミングで脆弱性が検知され修正が発生した場合、修正の規模が大きくなってしまいます。
一方で、開発中から脆弱性を検知することができればそれだけ修正のコストが低くなるため、導入しておくべきだと考えます。
導入
前提として、既にeslint
自体は導入済みであることがあります。
npm install --save-dev eslint-plugin-security
.eslintrc.json
{
"rules": {
},
"extends": [
"exlint:recommended",
+ "plugin:security/recommended"
]
}
困ったこと
- CSR を利用するためサーバー側で実行されない部分に対して、SSR などによりサーバー側で発生しうる脆弱性の検知に引っかかること(security/detect-possible-timing-attacks, security/detect-non-literal-regexp)
- 配列の要素にアクセスしているところに一律警告がでること(security/detect-object-injection)
こうした望まぬ警告を無効にするには、以下のように設定を付け加えます。
.eslintrc.json
{
"rules": {
+ "security/detect-object-injection": "off"
},
"extends": [
"exlint:recommended",
"plugin:security/recommended"
]
}
おわりに
後になって困ることをあらかじめ検知してくれるのが Linter の醍醐味だと思うのですが、その醍醐味が十分に生きる Linter…素晴らしいです。
メンバー募集中!
サーバーサイド Kotlin コミュニティを作りました!
Kotlin ユーザーはぜひご参加ください!!
また関西在住のソフトウェア開発者を中心に、関西エンジニアコミュニティを一緒に盛り上げてくださる方を募集しています。
よろしければ Conpass からメンバー登録よろしくお願いいたします。
Discussion
"plugin:security/recommended" から "plugin:security/recommended-legacy"に変わったみたいです