ikura1's log

備忘録

Djangoサイトのセキュリティ見直しメモ

[Django]セキュリティの見直し

はじめに

はじめてDjangoを使ったので、セキュリティ回りがどうなっているのかが気になったので調べつつ設定をしていった。

./manage.py check --deploy

System check identified some issues:

WARNINGS:
?: (security.W004) You have not set a value for the SECURE_HSTS_SECONDS setting. If your entire site is served only over SSL, you may want to consider setting a value and enabling HTTP Strict Transport Security. Be sure to read the documentation first; enabling HSTS carelessly can cause serious, irreversible problems.
?: (security.W006) Your SECURE_CONTENT_TYPE_NOSNIFF setting is not set to True, so your pages will not be served with an 'x-content-type-options: nosniff' header. You should consider enabling this header to prevent the browser from identifying content types incorrectly.
?: (security.W007) Your SECURE_BROWSER_XSS_FILTER setting is not set to True, so your pages will not be served with an 'x-xss-protection: 1; mode=block' header. You should consider enabling this header to activate the browser's XSS filtering and help prevent XSS attacks.
?: (security.W008) Your SECURE_SSL_REDIRECT setting is not set to True. Unless your site should be available over both SSL and non-SSL connections, you may want to either set this setting True or configure a load balancer or reverse-proxy server to redirect all connections to HTTPS.
?: (security.W012) SESSION_COOKIE_SECURE is not set to True. Using a secure-only session cookie makes it more difficult for network traffic sniffers to hijack user sessions.
?: (security.W016) You have 'django.middleware.csrf.CsrfViewMiddleware' in your MIDDLEWARE, but you have not set CSRF_COOKIE_SECURE to True. Using a secure-only CSRF cookie makes it more difficult for network traffic sniffers to steal the CSRF token.
?: (security.W018) You should not have DEBUG set to True in deployment.
?: (security.W019) You have 'django.middleware.clickjacking.XFrameOptionsMiddleware' in your MIDDLEWARE, but X_FRAME_OPTIONS is not set to 'DENY'. The default is 'SAMEORIGIN', but unless there is a good reason for your site to serve other parts of itself in a frame, you should change it to 'DENY'.

System check identified 8 issues (0 silenced).

issues

https://docs.djangoproject.com/ja/2.2/topics/security/

security.W004 httpに接続された場合、httpにリダイレクトするヘッドを挿入してはどうかという警告。 不用意にオンにすると取り返しの使ないことになるらしい。

SECURE_HSTS_SECONDS = 60
# SECURE_HSTS_SECONDS = 36000
# SECURE_HSTS_INCLUDE = True

下記を参考設定するのが良い。 https://docs.djangoproject.com/ja/2.1/ref/middleware/#http-strict-transport-security

  • 今はGAEがsslにしてくれているようだからオンにしても大丈夫なのかな?

security.W005 HSTSにサブドメインが含まれていないので、サブドメイン接続からの攻撃が想定され危ないよ!っという警告

SECURE_HSTS_INCLUDE_SUBDOMAINS = True

security.W006 コンテンツを自動判定して、指定している”Content-Type”と違う場合でも実行されてしまうため、”Content-Type-Options: nosniff”を指定しようぜっという警告。

SECURE_CONTENT_TYPE_NOSNIFF = True

security.W007 ブラウザにあるXSSフィルタx-xss-protection: "``1; mode=block``"``;を有効にして、XSS攻撃の防止に役立てようぜっという警告

SECURE_BROWSER_XSS_FILTER = True

security.W008 HTTPとHTTPSを両方使う場合、でない限りリダイレクトするようにするといいよっという警告

SECURE_SSL_REDIRECT = True

security.W012 HTTPSのみにCookieを転送可能なようにすることで、セッションハイジャックを困難にすると良いぞという警告

SESSION_COOKIE_SECURE = True

security.W016 HTTPSのみにCSRS Cookieを転送可能なようにすることで、セッションハイジャックを困難にすると良いぞという警告

CSRF_COOKIE_SECURE = True

security.W018 デプロイでDEBUGモードは危ないぞ!!っという警告

DEBUG = False

security.W019 デフォルトはsameoriginになっており、同じサイト内のページでフレームに読み込まれた場合にのみ表示される。 denyでは全てに置いてページをフレーム内に表示することはできない。

X-OPTION = "DENY"

security.W021 設定してないとブラウザのプリロードリストに登録されないぞ!っという警告 プリロードリストにホストが登録されている場合、最初に接続する段階からHTTPSでの接続します。

SECURE_HSTS_PRELOAD = True

次にやること

参考サイト

Django におけるセキュリティ | Django ドキュメント | Django

現場で使える Django のセキュリティ対策 / Django security measures for business (DjangoCon JP 2019) - Speaker Deck

ハマっているPodcast

最近ハマっているPodcast

  • Rebuild.fm
  • omoiyari.fm (lean-agile podcast)
  • Turing Complete FM

ブログなどテキスト情報だと、発信したい情報に最適化されてしましいます。
飲み会でしか聞けない話・話さないこと、そんな風な話がボケーっと聞けるので最近ハマっています。
どのラジオもゲストとして濃い人が出ているのがおもしろいです。
他にもありますが、自分の整理とおすすめ回

Rebuild.fm

最近の技術やNetflixのオススメなどの雑談まじりのラジオ
幅広いジャンルの技術トレンドの話からオススメのドラマまで何でも話すので楽しく聞くことができます。

おすすめの回 プログラミング言語への機械学習の導入の話がおもしろい。

rebuild.fm

omoiyari.fm

チームマネジメントや開発手法のラジオ
マネジメントされる方だとしても、リーダーやマネジャーはこういうことを気にしているのか。
またチームへのシステムの導入の話(アジャイルやモブプログラミングなど)があり、楽しく聞いています。

おすすめの回 意識高すぎておもしろい

lean-agile.fm

Turing Complete FM

低レイヤーやセキュリティのラジオ
こういう世界もあるんだな、この層の上で普段遊んでいるだなっということがわかっておもしろいです。 セキュリティキャンプコンパイラを作成する話など、わからないけどおもしろいです。

おすすめの回 Switchのハッキングの話 turingcomplete.fm

おわりに

他にも好きなPodcastはまだまだあるので、おすすめ回とともにまとめていきます。
全員のPatreonに登録できるだけの金がほしい…

自作キーボードMint60作った!

f:id:sinnra0:20190226001241p:plain
Mint60

目次

はじめに

2019年の目標として、自作キーボードに手を出すを設定したのでやりました。

現在の環境

去年からHHKBでデュアルキーボードでやっています。
元々去年から分離キーボードのことを知り興味を持っていましたが、分離キーボードが未知の世界だったので、HHKBデュアルキーボードにしました。
仕様感としては、なんの違和感もなくタイピングができましたので、Twitterで自作キーボードが流れてくるたびに、いいなーと思いながら眺めていました。

f:id:sinnra0:20190226001346p:plain
デュアルHHKB

なぜMint60を選んだのか

自作キーボードに行くにはまだステップが足りないとは思っていました。まずは市販の分離キーボード(Barocco, ErgoDox EZ)からと考えていたのですが、ほぼ勢いで決断しました。

わいのステータス

  • デュアルキーボード
  • はんだ付けは、2年前にヘッドホンジャックを直そうと少しやった程度

    • それ以前は中学高校
    • はんだごてとはんだごて台は所持
  • 分離キーボードに興味あり

  • ストロークは深い方が好き
  • 軸はよくわかってない

購入時に考えたこと

  • 分離キーボードであること
  • 直感的に良いと思ったもの
  • 作り方が紹介されていること
  • HHKBとキーの数が大差ないこと
  • 初心者であること
  • 挑戦は1つにすること

購入を検討したもの

  • Helix
  • Crone Chocolate

Helix

Helixは見た目が最高にかっこよくて、最後の最後なでMint60とどちらにしようか悩みました。今回はじめての自作ということで挑戦することは1個に留めようと思い、ストロークを理由にやめました。深いのがあるのもしっていますが、浅いのがかっこよかったんじゃー

Crone Chocolate

コンパクトでかっこかわいくて良かったのですが、3行しかないのに慣れるのは厳しそうだと思いやめました。

揃えた道具

必須

  • はんだごて
  • はんだごて台
  • 精密プリント用はんだ
  • はんだ取り線
  • セメダイン5分
  • 作業マット(カッターマット・木の板でもなんでも)
  • ペンチ
  • ドライバー
  • ブレッドボード

便利

  • リード折り曲げ器
  • マスキングテープ

リード折り曲げ器が、いい感じに曲げれて便利
はんだ付けする物を固定する手段としてはマスキングテープはあった方が確実に便利です。

作成

f:id:sinnra0:20190226001520p:plain
作成中
作業は参考サイトの通りにほぼやりました。

大きい所

  • 片方ずつ作った 違うのは、片方ずつ作ったことくらいなはずです。同時にやると失敗するというリスクがあるので、それを回避するために片方ずつ作りました。

細かい所

  • マスキングテープがなかったので、一回ずつ折る入れるはんだという流れて、ゆっくりやっていった
  • マスキングテープがあったなら、ループしなくてすんだと思いますが、一個一個確実に進めました。

困った所

  • 左の1の列が反応しない
  • 左の3の列が反応しない
  • 左の2の列が反応しない

全部LEDが干渉しているのが原因でした!
LEDの裏を全てビニールテープを覆うことにより解決しいやがりました。

所感

参考記事が詳細に書かれていて、ほぼ詰ることなく簡単に作ることができました。
はんだ付けもYoutubeを見ることで、なんとなくわかった気になりできたので良かったです。
設計・販売してくれたゆかりさんには感謝しかありません!
ありがたやー

次の動き

直近はKeymapの変更です。ハード的にはキーキャップの高さや、印字を変えてみたくなったので、キーキャップを変えていこうと思っています。また、持ち運びたいのでケースをどうするか考えています。あぁ、ケーブルも変えたい…
新しいキーボードは技術書典6などで良さそうなものがあれば買うか予定です。キットを探している段階で、時期を逃した場合買えないということが理解できたので…

参考サイト

syonx.hatenablog.com キーボード自作、特に Helix キーボードキットの製作に最低必要な工具のメモ · GitHub eucalyn.hatenadiary.jp eucalyn.hatenadiary.jp