これは何? Railsを使って開発をしている人のほとんどが、 おそらく何かしらの認証機能を提供していると思いますが、 その認証機能って初心者の人からすると非常にややこしい。 確かに、Railsが色々やり易くしてくれてるのはわかるけれども、 逆にブラックボックスすぎて全然意味わからんし!みたいなところもあるかと思います。 また、認証はセキュリティを高めるために非常に重要なトピックでもあり、開発者で担当する人が深く理解しておくことが求められると思います。 ただ、認証はアプリやインフラから独立しているものではないため、認証だけよくても他の部分に脆弱性があれば危険であることは変わらない点に注意してください。 そもそも認証ってなんぞ 認証は、アクセス制限機能と思ってもらえれば大丈夫そうです。 アクセスを制御したい場合に認証機能を利用して閲覧ページなどに制限をかける感じです。 認証の種類 Railsで
このように、入力フォームに「javascript」を埋め込む事が、クロスサイトスクリプティング(XSS)の基本的な手法になる。 以上が基本的なXSSの手法になるが、具体的にどういった脅威があるのか。 脅威例 「セッションハイジャック」:訪問者のクッキー(cookie)情報を抜き取ること。結果不正ログインなどを招いてしまう。 例えばECサイトでセッションハイジャックが行われてしまうと、クレジットカード情報など重要な顧客情報が盗まれてしまい、不正に買い物などが行えてしまう。 また広告システムなどのBtoBシステムでも、不正に他社アカウントを乗っ取りログインすることで数値を書き換えるなどができてしまい、大きな被害が出てしまう。 対策(rails) XSSは、ユーザー入力がHTMLのタグやJavascriptとして認識されてしまうことで発生してしまうので、ここへの対策を打っていく事になる。 rai
Capistrano deploy時に発生する SocketError: getaddrinfo: Temporary failure in name resolutionのエラーの原因と解決方法 エラーメッセージの意味 ソケットエラー: 名前解決のために一時的に失敗しました。 エラー原因 ~/.ssh/know_hostsファイルに記載されているリモートサーバーへのsshによる接続情報が古くなっているために、ssh接続できずにエラーになってしまいます。 解決方法 ssh-keygen -R remote_host_name 上記コマンドにより古いssh接続情報を削除する。 (又は手動で vi ~/.ssh/known_hostsでファイルを開いて、対象のリモートサーバーのhostnameが書かれた該当の1行を削除する。) その後再度sshコマンドを実行する。 これにより、新規ssh接続と
YYPHP#51「みんなが好きなフレームワーク、どのくらいまじめにテストやってる?、PHPを使う上でこれは知っておくべきこと、1番詳しいPHPの技術書はどれですか?、Dockerのベストプラクティスについて聞きたい、アプリケーションのGitリポジトリとインフラのGitリポジトリをそろそろ一緒にしていいか?、PHPUnitのコードバレッジと実行速度の話、PHPとオブジェクト指向を知り尽くした人がこれから目指すさらなる高み」PHPRailsLaravelDockerYYPHP これは2018年09月07日に開催したPHPerイベントYYPHP#51のイベントレポートです。 YYPHPは一言で「PHPerの部室」です。PHPについて、雑に、ゆるく、ワイワイ話し合う集いです。毎回お題を決めずに雑談を出発点にいろいろなことを突発的にやります。集まった人でコードリーディングをすることもあれば、一緒に開
これは何? 大規模なアプリケーションを開発したりする場合、 RailsをAPIサーバーとして利用し、APIクライアントは別に用意するケースが多い。 (弊社ではReactNative) その時に、RailsをどのようにしてAPIサーバー専用とさせるのかの基礎知識を記載して行く。 僕も学びながらなので是非ご指摘あれば教えてください。 API化に必要な知識 基本的には、APIクライアントからのHTTPリクエストが来たら、 そのリクエストに応じたレスポンスを返してあげるというそれだけ。 そのレスポンス部分だけをRailsでやりますよということ。 リクエストの形はHTTPリクエストなのでURLで来て、 Railsサーバーで色々ロジックを動かして、 レスポンスの形はJSON形式で返してあげるのが基本らしいです。 これで1セット。 なので、Railsで普段ウェブアプリケーションを開発している人からしても
概要 SQLキャッシュを使うより、変数を使い回すほうが圧倒的に早い 例えば1ユーザの情報を表示するような場面ではパフォーマンスが気になるレベルではないと思われる。 表のようなデータを表示するような場合に同じデータをたくさん表示するような場合はちゃんと変数に入れたほうが、パフォーマンスが良い はじめに RailsのActiveRecordの仕組みに同じSQLを何度も読んでもキャッシュしてくれて、都度DBにアクセスしなくて良い便利な仕組みがある。 この機能はかなり便利で雑にプログラミングしてもパフォーマンスが落ちにくい。落ちにくいがハイパフォーマンスを求められるところや、多量のデータを表示、作成するような場合だと影響を与えるような気がする。 そこでSQLキャッシュを使った場合と、普通に変数に保存した値を使いまわした場合でベンチマークをとってみた。 SQLキャッシュが効いているかログで確認 キャ
概要 simple_formのBootstrap版を使用している際、 エラーメッセージが該当入力欄のすぐ下に出てくるのは非常にユーザーがわかりやすくてい良い。 presence と format の両方を指定すると、 空欄の時に両方のエラーメッセージが表示され非常に見栄えが良くない。 format だけ指定すれば、未入力の場合もエラーが出るが、 適切なエラーメッセージにはならない。 そもそもそんな細かいところ気にしなくても良いかもしれないですが、 私と同じ神経質なあなた! にはこの記事がお役に立てるかと思います。 方法 この方法は、deviseのソースコードを参考にやってみたらうまく行ったというものですので、 方法としては問題ないかと思います。 仮に未入力禁止で全角文字しか入力をさせたくないfirst_nameという入力欄をつくるとします。 その場合、一行で書いてしまうなら以下のようになる
複雑な条件でデータを抽出する テーブルのデータをより複雑な条件で絞って取得するメソッドをまとめる。 条件式を使用する 基本的な条件式 テーブルのデータを条件式で絞って取得する場合。 データを受け取りたいテーブルに紐づくモデルに対して、 モデル名.where(カラム名: '値') # 例 artistカラムの値が'ももいろクローバーZ' のレコードを取得 @discography = Discography.where(artist: 'ももいろクローバーZ') # 例 artistカラムの値が'ももいろクローバーZ'かつreleased_dateが'2011-07-27' のレコードを取得 @discography = Discography.where(artist: 'ももいろクローバーZ', released_date: '2011-07-27')
これは何? Railsガイドのマイグレーションを後で扱いやすいようにまとめました。 コマンドで生成するマイグレーション bundle exec rails generate migration hogehoge のhogehogeの部分を変えることで色々作成できるようなのでまとめます。 AddXXXToYYY カラム名:型 カラム名:型 ・・・ RemoveXXXFromYYY カラム名:型 カラム名:型 ・・・ CreateYYY カラム名:型 カラム名:型 ・・・ YYY:テーブル名(複数形) XXX:カラム名(複数カラム追加する場合は適当で良い) 上記はよく使うやつですが、こちらを参照するといかにいろんなコマンドが用意されてるかがわかるので必要に応じて使ってください。 僕の場合は、上記だけ最低限押さえた上で、あとはマイグレーションファイルを自作して行く形でいいのかなーと思ってます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く