1. nannou

    Posted

    nannou
Changes in title
+JavaでCookieにSameSite属性をつける
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,44 @@
+## 概要
+javax.servlet.http.CookieにはSameSite属性を付与するAPIがありません。
+そんな時の対応です。
+ちなみにSameSite属性はほぼ全てのブラウザが対応しています。
+[参考](https://caniuse.com/#search=samesite)
+
+## Cookieクラスを使用せず、Set-Cookieヘッダーを使用する
+
+Spring bootでやってみます。
+
+```java
+@RestController
+public class DemoController {
+
+ @GetMapping(value = "/")
+ public String index(HttpServletResponse response) {
+
+ String name = "name";
+ String value = "takeshi";
+
+ String cookie = String.format("%s=%s; max-age=3600; Path=/; HttpOnly; Secure; SameSite=Lax;", name, value);
+
+ response.addHeader("Set-Cookie", cookie);
+
+ return "hello, world!";
+ }
+```
+
+<img width="878" alt="Screen Shot 2019-08-06 at 17.11.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469184/a4ba2d13-33d6-b76a-d999-830147cb6aa3.png">
+
+無事takeshiが入りました。
+
+頻繁にCookie書き込みを行う場合は、パラメータで受け取ってセットするカスタムクラスを作った方が良さそうですね。
+もしくはApacheやnginxなどのWebサーバ側で一括設定もできます。
+[参考](https://dev.to/shosta/security-headers-to-use-on-your-webserver-3id5)
+
+
+
+### 参考
+[Class Cookie](https://docs.oracle.com/javaee/6/api/javax/servlet/http/Cookie.html)
+https://stackoverflow.com/questions/42717210/samesite-cookie-in-java-application
+https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
+
+