自作Webサービスを世に出す時の注意点(セキュリティ 法律 売却)
自作サービスを世に出すために注意点などありますか? (セキュリティや権利取得などです)
また良いサービスはどのような経路で売買されるのですか?(例としては、質問箱というサービスがどこかの会社に購入された件)です。
という質問を頂いたのでそれについて考えてみます。
セキュリティで注意すべきことの一例
まず基本的なこととしてパスワードの扱いです。
ユーザー登録するようなサービスを作る場合は、パスワードをハッシュ化して登録します。
生のパスワードをデータベースに登録してはいけません。
例えば、
- Eメールアドレス: [email protected]
- パスワード: pass1
っていうアカウントが登録されたとします。
これをそのままデータベースに入れちゃって、もしそのサーバーが不正侵入されてデータベースのデータを盗み見られちゃった場合まずいことがおきます。
同じEメール、パスワードで別のサービス、例えばAmazonとかFacebookにもアカウントを作っている場合です。
不正侵入者がそのアカウントを使ってAmazon、Facebookにログインできてしまいます。
買い物をしたり、友達にめちゃくちゃなメッセージを送ったりされたら困りますよね?
もちろん、不正侵入されないようにサーバのセキュリティを万全にできればいいんですが、どんなにがんばっても100%侵入されないとは言い切れません。
ですから、最悪侵入されてもユーザーに迷惑がかからないようにパスワードをハッシュ化して保存するのが作法なんです。
パスワードのハッシュ化とは、パスワードをハッシュ関数という文字列変換するプログラムに渡して、別の文字列に変換します。
こんなイメージです。
hashed_password = hash_kansuu(password); print(hashed_password); // ADaeh32oawhoi547 DB.insert('INSERT INTO users(user_id, password) VALUES ?, ?', [user_id, hashed_password]);
“pass1″をhash_kansuuにわたすと、”ADaeh32oawhoi547″に変換されます。これをDBに保存するんです。
その後、 [email protected], pass1でログインしてきたら、pass1をハッシュ関数で変換した値とDBに保存したハッシュ後パスワードを比較して一致したらログイン成功とします。
こうしておけば、生のパスワードをDBに保存することなくログイン機能を実装できます。
不正侵入してパスワードADaeh32oawhoi547を盗まれても、AmazonやFacebookにはログインできません。本当のパスワードはpass1ですからね。
このような機能はフレームワークを使えばかんたんに実装できます。
フレームワークでセキュリティ強化
フレームワークが用意してるユーザー登録APIを使えば、データベースにはハッシュ化されたパスワードが保存されるように大抵のフレームワークはなっています。
そういった機能使わずに、自分でハッシュ関数で変換するロジックを書いてもOKです。
この他にも基本的なセキュリティ脆弱性は塞いでおく必要があります。
- クロスサイトスクリプティング
- SQLインジェクション
など既知の脆弱性はたくさんあります。
これらの脆弱性はフレームワーク使うと防げる場合が多いですが、基本的なセキュリティ脆弱性としてどういったものがあるのかは抑えておく必要があります。
法律違反しない
権利問題としては、基本を法律を違反しないようにすることです。
最近だと漫画村っていうサイトが閉鎖されました。
漫画をアップロードして共有するサービスです。
著作権のある漫画をアップロードして共有するのは著作権違反です。
ですから、漫画をオンラインで読めるようにするサービスを作りたいならば、法律を担保してるかを考えてサービスを設計する必要があります。
法律のグレーゾーン問題
YouTubeにテレビ番組がアップロードされてるのは厳密に言えば、法律違反です。
これに対してはYouTube側も対策していて、完璧ではないにせよ、不正にアップロードされた動画は削除されています。
「法律ばかり気にしてたら、おもしろもの作れないじゃん、法律が古くて時代に合ってないって場合だってあるし」
とグレーゾーンを狙っていく人もいるかもしれませんが、どうするかは個人の選択であり、個人の責任です。
基本的には法律を守る意識で望んだほうが良いと私は考えます。
サイトの売却方法
Webサイト 売買
で検索するとサイトを売りたい人と買いたい人のマッチングをしてくれるサイトが見つかります。
そのようなサイトに登録して買い手を待つのが一つの方法です。
この他にもツイッターやFacebookなどのSNS経由で
「このサイト売りたいんですけど、買いたい人いませんか?」
って呼びかける方法もあります。確か、質問箱の人はそうやって売却してたんじゃないかなと。
サイト売却とか夢があっていいですね。