サーバサイドからのデータの受け渡しに data-* を使う
(大した話ではないですが、だいぶ前にどっかで話して以来ブログに書いてなかったようです)
サーバサイドのプログラムから、クライアントサイドの JavaScript に何かしらのデータを受け渡しする場合というは、XSS を作りやすい部分であります。
<script>
var User = {
id : [% user.id | js %],
name : "[% user.name | js %]"
};
</script>このようにテンプレートエンジンを使って script の中で何らかの変数を展開するような場合、HTML としてのエスケープと、JavaScript としてのエスケープを正しい順番で行う必要があるか、あるいは専用のフィルタ関数を作るなどが必要になります。すなわち、いずれにせよ正しい処理方法を覚えて、毎回間違えずに使う必要があります。これらは、正しい知識を持つエンジニアが正しい実装をして正しい使いかたをできれば問題ないと言えますが、そんな面倒なこと覚えていられねーよという話ですし、人間は忘れるものですから、本質的に危険です。
なので、最近僕が使っている方法が data-* で値を受け渡す方法です。
これは例えば html 要素や、body 要素などに data-* を適当に生やしてデータを渡すというだけです。
<!DOCTYPE html>
<html
data-user-id="[% user.id | html %]"
data-user-name="[% user.name | html %]"
>
...
<script>
alert(document.documentElement.getAttribute('data-user-id'));
</script>こうすることで、変数のエスケープは常に HTML 用のをかけるだけですみます。これはすなわち、デフォルトでHTMLエスケープをするテンプレートエンジン (普通はそう) を使う場合には、余計なエスケープの心配をする必要が一切なくなります。意図的にミスしようとしない限りミスれないので安全です。
data-* を付ける要素
data-* を付ける要素は、なんでもいいですが、できるだけドキュメント上に早く登場するほうがスクリプトから使いやすいです。
html 要素であれば、document.documentElement で簡単にアクセスできるし、スクリプト実行時には必ず存在するので変数の取得に関しては問題ありませんが、クローラーによっては先頭の n bytes をとってきて title 要素を抜き出すみたいなことをやっていたりするので、大量のデータを入れるには向かないようです (html 要素でええやん! と使いまくってたら mala さんに指摘されました)
body 要素でも、document.body で簡単にアクセスできるし便利なんですが、body 要素に到達するまでは変数の読みとりができない点に注意する必要があります。どうしても header 要素内の script 要素で読みこんでいる JS の中で同期的に変数を読みとりたい! という場合は使えないことになります。
当然、他の要素でも data-* をつけることはできるので、ついでにつけておいて取得するようなこともよくやっています。
構造化データは?
頑張って展開して埋めこむか、専用の API を作ってあとから読みこむのが一番安全だと思います。どうしてもやりたいときだけ従来の方法を非常に注意して使うとかしかなさそうです。
✖
gerry++
✖
✖
TAMRON SP24-70mm F2.8 Di VC USD (A700) と Canon EF100mm F2.8Lマクロ IS USM を持って昭和記念公園に行ってみたけれど、使い比べてみるとだいぶ違うなあと思った。ただこれが画角によるものなのか、性能によるものなのかハッキリしない。100mm の画角がそもそも長いこと使っていてすごく使いやすく感じている (普段の写真用の目の画角を100mmぐらいに設定しまっている) のもあるだろうけど、100mm のほうが撮っていて楽しかった。
24-70 は意識的に、今まであまり使っていない 24-35mm らへんを使おうとしているけど、慣れていないのですぐ望遠側70mmにしてしまうことが多々あった。しかし 70mm で開放にしても、背景が割とうるさく感じるので、撮りかたを変えないと駄目だなと思った。100mm だと適当に撮っても気持ちいいんだけど、もっと頭を使わないとだめだ。
感動するとか、撮っててめちゃくちゃ楽しい! というレンズではない気がするけど、それは単に自分に腕がないことが実感できるだけなのだろうなと思うので、めげずに使っていきたい。70-200mm を買った直後も 100mm 前後しか使わないことはあったし、100mm を買ったときも 50mm との感覚の違いには大変困ったので、経験の問題だと思う。
関連エントリー
- 2012年の撮影まとめ 70-200mm を一番使ってる気がしてたけど、集計見てみてみたら 100mm MACRO が結構多かった。24-70mm は最近買ったのに...
- ✖ TAMRON 大口径標準ズームレンズ SP 24-70mm F2.8 Di VC USD キヤノン用 フルサイズ対応 A007E cho45...
- 月 200mm で撮ったやつを1/4ぐらいにトリミング (400mm 相当?)。月を撮るときだけ 1500mm ぐらいのレンズがほしくなる
- Sonnar T* FE 55mm F1.8 ZA ソニー SONY 単焦点レンズ Sonnar T* FE 55mm F1.8 ZA Eマウント35mmフルサイズ対応 SEL55F18Z c...
- ✖ Canon 望遠ズームレンズ EF70-200mm F2.8L IS II USM フルサイズ対応 cho45 キヤノン ★ 3.0 / 5...
✖
人間の顔が写っている場合、ホワイトバランスを大きくいじれないので、あとから写真全体の雰囲気を変えるのが難しい。一つでも顔が写っている場合、それに最初に注目してしまうので、そもそも写真のホワイトバランスが鑑賞者に与える印象が薄い。顔が入った時点で、顔の印象が支配的になるので、もし現像プロセスで気をつけるとしたら、とにかく顔の印象だけで良く、それがどうにもならないのであれば、もうどうにもならない。そんなように思った。撮影時の技術はよくわからない。
関連エントリー
- ✖ ウェブの場合、どうやっても厳密な色で閲覧してもらうことは不可能なので、人間の眼のホワイトバランス調整機能を活用するために #FFFFFF を...
- ✖ 人が写ってる写真を写真展とかで見ると、これは写真作品なのか、ともやもやする。それは当然もちろん間違いないのだけれど、顔の印象の大部分を支配す...
- ✖ 「絵造り」でカメラを選ぶのってすごい変な感じがするんだけど、そういう発言は割とよく見る気がするし、記事もあるようなないような気がする。いまい...
- ✖ カメラの技術っていうか、そもそも風景を切り取る感性・写真のセンスに欠けてる……
- img2img の strength 0.0~1.0 まで指定する。イメージとしては 0.75 なら元画像の75%をノイズに変えた状態から復元をするという感じ。 顔が支配的な画像...
✖
人が写ってる写真を写真展とかで見ると、これは写真作品なのか、ともやもやする。それは当然もちろん間違いないのだけれど、顔の印象の大部分を支配するのは被写体の顔 (=DNA) だし、次に支配的な表情を生みだすのはコミュニケーション力であって、光を写す、写真そのものを使った表現ではないじゃないかと思ってしまう。
とはいえ、じゃあ他のものはなんなのか、例えば風景写真はどうなのかと考えてみても、それも自然を借りて写しているだけだし、なので単に自分が、「生まれもった才能」と「コミュニケーション力」というものを嫌っているというだけだと思う。
関連エントリー
- ✖ 人間の顔が写っている場合、ホワイトバランスを大きくいじれないので、あとから写真全体の雰囲気を変えるのが難しい。一つでも顔が写っている場合、そ...
- なぜ今僕がモールスを学習するのか 僕はベースとしてコミュニケーションに興味がある、というのがまずあって、そのためウェブサービスでも CGM 的なサービスが好きだったりするわけ...
- ✖ 自分は自分のルールで生きており、つまりこのルールは道徳ないし宗教なので、他人にどうこう言われるようなものではない。ただ生きてるわけでもなく、...
- ✖ BIあれば何もかも好き勝手できるのに…… コミュニケーションをとりたくないから一律支給の他に適切な方法がない。
- ✖ 自分にコミュニケーション能力がないことによって、かえってコミュニケーションの重要性について実感できるのは良い。伝えるべきこともあるし、伝える...
gerry++
✖
関連エントリー
- ZenFone2 にようやく Android M (Mashmallow) アップデートが降ってきた ASUS ZenFone 2 の Android M (6.0) アップグレードは遅延 | tech - 氾濫原 遅延していた OS アップ...
- Android 版 Lightroom Mobile の DNG 撮影 最近の Android 端末だと RAW 撮影に対応していることがある。あまり対応アプリケーションがないのだが Lightroom Mobi...
- Photoshop + Lightroom が月額1000円 Lighroom はパッケージも今は別に高くはなくて、アップグレード版は10k円しないぐらいだけど、Photoshop はまだまだ高い。最新...
- Windows Update で再起動求められるけど、再起動してもインストールされない こうなってて、バージョン 1151 をインストールするから再起動しろとなっているけど、再起動しても何も起きず普通に起動してインストールされて...
- iGPU を活用して VRAM の節約 RTX 4070 (12GB VRAM) を使ってるけど、Stable Diffusion やら Photoshop や DaVinci R...







