NFCのUIDはセキュリティーには使えない

NFCのUIDはセキュリティーには使えない

NFCのUIDをセキュリティー目的
つまり
ホテルのドアの施錠、開錠を
NFCのUIDでするのはダメ

UIDは、各製造業者により管理され重複しないし
近距離無線のための規格なので
ネットから情報漏洩しないけど
UIDはMACアドレスみたいに
偽装できるし、簡単に読み取れるため
セキュリティーとしては向かない

NFCは、3つのモードがあり
P2Pモード
リーダ/ライターモード
カードエミュレーションモード
がある

このうち、カードエミュレーションモードを使い
自分自身のUIDを偽装してカードのふりをできてしまう

さらに、NFCは近距離無線なので
本体そのものに触れなくても情報を取得できる

これらを考慮して
UIDを使ったサービスを提供するなら
これらのリスクを考慮する必要がある

タグテクノロジーの一覧と特徴

タグテクノロジーの一覧と特徴

NfcA
ISO/IEC 14443 type-A準拠のタグ
世界的に最も普及している
安価で入手可能
Mifareはこの規格に基づいている
日本ではtaspoに使われている

NfcB
ISO/IEC 14443 type-B
準拠のタグ
日本では免許証、住基ネットパスポートに使われていて
海外では電子マネーに使われている

NfcF
JIS 6319-4準拠のタグ
通称FeliCa
他の物に比べ効果だけど
高速通信可能でセキュリティーが高い

NfcV
ISO/IEC 15693準拠のタグ
RFIDとして物流管理に使われる
ゲームセンターのカードにも使われる

IsoDep
ISO/IEC 14443で規定されているデータ交換形式DEPで通信可能なタグ
このタグテクノロジーを使ったものは
NfcA
NfcB
のいずれかに準拠する

MifareUltraLite
NfcAに基づいている
比較的通信速度は低速、メモリも少ないけど安価
この方式と互換性のあるタグとして
NTAGがある

MifareClassic
NfcAに基づいている
安価で、MifareUltraLiteよりメモリが多い
Mifare standardともいわれるけと
Android端末で読み取れないことがある

Ndef
NDEFフォーマット済みのタグ
このタグはNDEFデータを含む

NdefFormatable
NDEFフォーマット可能なタグ
フォーマットすると、タグテクノロジーがNdefになる

NfcBarcode
RFIDタグの一種で
絶縁体インクと印刷技術を使うことで
インクジェットのような低コストなタグ
あまり普及していない

ポータブルDVDドライブを購入しました 

iPad 2 で レンタルDVDを視聴したいため
ポータブルDVDで WiFi もしくは BlueTooth 接続のものを探しました

今回購入したのは
WiFi 対応のDVDドライブです

使い方としては
ポータブルDVDドライブがアクセスポイントになっているので
これにアクセスし、iPad アプリから視聴することになります

面倒な点もいくつかあり
iPad2 の設定から アクセスポイントを無線LANから
このDVDプレーヤーに切り替える必要があるということ

そして、使っている間は、ネット接続ができないということです

それでも、TUTAYAで100円で借りてきたDVDを見ることができるので
個人的には満足ですが

なお、視聴するにあたりとくに問題はありませんでした

スペックが低い昔のスマホとかだと、再生に問題があるかもしれません

タブレットスタンドを購入してみました

Google Mexus7 でタブレットを操作するときに
タブレットスタンドがあるとずっと持っていなくてもよいため
購入しました

私の場合、自炊した参考書をAdobe Reader でみるのですが
コードを書いたりするときに毎回手荷物のは面倒ですし
FXなどをするときにも手で持たなければ
他の作業もできます

今回購入したのは、机やサイドテーブルに取り付けるタイプです

これなら、落下するということもなさそうなので安心して使うことができます

ubuntu へ Emmet-vim のインストール

ubuntu へ Emmet-vim のインストール

dotinstall で Emmetについてやっていたけど
vim で行ってみたいので
Emmet-vim を ubuntu に入れることにしました

emmet-vim ubuntu で検索して
https://github.com/mattn/emmet-vim
から
Download ZIP をクリックして
ファイルをダウンロード

次に端末を開いて
cd ダウンロード/
unzip emmet-vim-master.zip
でファイルを解凍

これで
emmet-vim-master/
が作成されます

そして
cp -rp emmet-vim-master/autoload/ ~/.vim/
cp -rp emmet-vim-master/plugin ~/.vim/
で必要なファイルをコピー

これで、emmet-vim plugin が使えるようになります

使い方に関しては
ubuntu13.04をインストールしUnityディスクトップからGnomeディスクトップへチェンジしたりした設定のまとめ+VimにZen-Coding(emmet-vim)を加える
http://edeito.seesaa.net/article/375920016.html
を参考にさせていただきました

まず試しに
hello.html を作成

そして
入力モードで最初に
html5
と入力し、ESC キーをおして
Ctrl + y を押して , を押してから Enter
これで

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title></title>
</head>
<body>
        
</body>
</html>

が作成されます

次に
h1#header.nav>ul>li*5>a
と入力してから
ESC キーを押して Ctrl +y を押してから
, を押して Enter
これで

        <h1 id="header" class="na">
                <ul>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                </ul>
        </h1>

が作成されます

サーバーで編集するときには vim 操作が多いため
これを活用していこうと思います

Emmet について

Emmet について

Haml がうまく動作しないので
先に Emmet について学習

まず、
#01 Emmetとはなにか?
http://dotinstall.com/lessons/basic_emmet/25101
を参考に
Emmet についての概要、必要な知識などを学習

まず、概要
Emmet はエディタ用のプラグインのことで
かつては
Zen-coding と呼ばれていたプロジェクト
これは、HTML、CSSを効率的に書くことができる

公式サイトは
http://emmet.io/

対応しているエディタについては
http://emmet.io/download/
を参考に調べることができる

ドキュメントでよく見るものとしては
cheat-sheet でこれは
http://docs.emmet.io/cheat-sheet/
を参考にする

これによりできることは簡単にコードをかけること
Sbulime Text の場合が動画で紹介されている
!を押して Ctrl + e で簡単にベースとなるHTMLのソースが書けれる

必要な知識
HTML
CSS
となる

動画だと Sublime Text だけど
私の場合はいろいろと vim つかうことが多いので
vim のものを探してみます

モバイルバッテリーの購入

外でスマートフォンを使っていると
電池の消費が激しいため
モバイルバッテリーを購入

アプリの使用用途はPDFファイルの閲覧が多いため
どうしても消費が大きいため
急速充電可能なものを選択

今回購入したのは

充電する対象のものは
HTC J One
ipod touch
イー・モバイルのモバイルルーター

いろいろと調べてみたけど
500回程度までが限界のようなので
価格と要領、そして重量で今回のバッテリーを選択

また、バッテリーそのものの充電時間もみてみたけど
これは7時間程度

ほかのものも見たけど充電に12時間かかるのもあり
さすがにそれは除外

出先に持ち運ぶことが多く、泊まり先で充電することも考えると
あまり長時間の充電は考え物

当面は、このバッテリーを使う予定

google web サービスでアクセストークンの取得その2

google web サービスでアクセストークンの取得その2

#11 アクセストークンを取得しよう (2)
http://dotinstall.com/lessons/google_connect_php_v2/9911
を参考に
アクセストークン取得を実装

前回、パラメータを設定したので
curl を使うところから開始

curl_setopt($curl, CURLOPT_URL,$url);
これは決まり文句らしいけど
意味を検索

http://php.net/manual/ja/function.curl-setopt.php

curl_setopt() のリファレンスがあるので、これを参照

curl_setopt() は
curl 転送用オプションを指定する関数

引数の解説をメモすると

$curl
は、curl_init() がかえす curl ハンドル

CURLOPT_URL
は、取得するURLとなる
ttp
このほかにもいくつかオプションを設定する

curl_setopt($curl, CURLOPT_POST,1);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

これらのオプションの解説メモ

curl_setopt($curl, CURLOPT_POST,1);
CURLOPT_POST

は、POSTを行う
POST は、
application/x-www-form-urlencoded 形式
なので、一般的なHTMLフォームとおなじ

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params));
CURLOPT_POSTFIELDS

は、POSTで送信するすべてのデータを指定する

http_build_query() 

は、URLエンコードされたクエリ文字列を作成する関数
web api でよくある & で結合したURLをつくる
関数については
http://php.net/manual/ja/function.http-build-query.php
のリファレンスを参照

http_build_query($params)

なので $params で client_id などを設定したので
これらをパラメータとして
リクエストURLが作成される

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

CURLOPT_RETURNTRANSFER


true を設定すると
curl_exec() の返り値を文字列でかえす
通常だとデータを直接出力する

これらのオプション設定ができたら

$rs = curl_exec($curl);

で実行する

curl_exec() については
http://php.のnet/manual/ja/function.curl-exec.php
のリファレンスを参照

この関数は、指定した curl セッションを実行する

curl の実行が終わったら

curl_close($curl);

で閉じるのを忘れずに

curl_close() は
curl セッションを閉じる
http://php.net/manual/ja/function.curl-close.php
のリファレンスも参考にする

返ってきた値の $rs は
JSON形式なので

$json = json_decode($rs);

でJSON文字をデコードして
PHPの変数に変換する

json_decode() は
http://php.net/manual/ja/function.json-decode.php
のリファレンスを参考にするとわかりやすい

この
$json
には、アクセストークンが入っているので
それを確認するため、一度
var_dump() を使って
画面に表示する

var_dump($json); exit;

そのまま再度ブラウザをリロードしても
セッション関連でエラーになる ため
一度 index.phpからアクセスしなおす

これで、ブラウザで
アクセストークンが表示されていれば成功

関数の登録とホーム画面作成

関数の登録とホーム画面作成

#05 よく使う関数を登録しておこう
http://dotinstall.com/lessons/google_connect_php_v2/9905
を参考に
よくつかう関数を登録しておく

functions.php を作成して
ここに書いておく

まず、DBに接続するユーザ関数

function connectDb(){
try{
	return new PPO(DBN, DB_USER, DB_PASSWORD);
}catch(PODException $e){
	echo $e->getMessage();
	exit;
}
}

接続などは try catch で接続失敗したときの処理を書く

	echo $e->getMessage();
	exit;

はエラーがあったときに表示して終了する処理

接続成功のときの処理は

	return new PPO(DBN, DB_USER, DB_PASSWORD);

でDBへ接続することでPOD
オブジェクトをかえしてもらう

また htmlspecialchars() が長いので
h()
で使えるようにする

function h($s){
return htmlspecialchars($s,ENT_QUOTES,"UTF-8");
}

htmlspecialchars() に関しては
http://php.net/manual/ja/function.htmlspecialchars.php
を参照

ENT_QUOTES を指定すると
””の取扱いが変わる

$s は変換される文字列

ここまでできたら、
index.php を作成してホーム画面を作成

一番上のPHPソースで

require_once('config.php');
require_once('functions.php');

で設定ファイルを読み込む

その下のHTML部分は
base.html というファイルを以前作成したので
それをコピペでOK

HTMLソースは

<!DOCTYPE html>
<html lang="ja">
<head>
        <meta charset="utf-8">
        <title>ホーム画面</title>
</head>
<body>



</body>
</html>

 google web service 共有設定

 google web service 共有設定

#04 アプリ共通の設定をしよう
http://dotinstall.com/lessons/google_connect_php_v2/9904
を参考に
アプリ全体に共通する項目をconfig.php にまとめる

DB、クライアントID、google にもらったコードなどの設定を

definoglee(‘DSN’,’mysql:host=localhost;dbname=dotinstall_google_connect_php’);
これでDB接続設定

define(‘DB_USER’,”dbuser’);
これでDBユーザを指定

define(‘DB_PASSWORD’,a8sdfnc’);’
というようにDBパスワードを指定

define(‘CLIENT_ID’,’クライアントID’);
define(‘CLIENT_SECRET’,’クライアント secret’);
というように
google から提供された
CLient ID
Client secret
を指定する

define(‘SITE_URL’,’http://dev.dotinstall.com/google_connect_php’);
として、サイトURLを登録
これでサイトドメインが変更したときには
ここだけ変えればよくなる

そしてエラーの出力の種類も指定
error_reporting(E_ALL & -E_NOTICE);
としておくことで
NOTICE以外すべて

session_set_cookie_params(0,/google_connect_php’);
これで、セッション範囲を指定