アライメントは、要素の位置(左寄せ、中央寄せ、右寄せ)を指定すること
Main Axisは、ウィジェットの向きに
Cross Axisは、ウィジェットと交差する向きに
アライメントは、要素の位置(左寄せ、中央寄せ、右寄せ)を指定すること
Main Axisは、ウィジェットの向きに
Cross Axisは、ウィジェットと交差する向きに
Android Studioで「st」と打つと、StatefulWidget/StatelessWidget の雛形を作れる
現在のチャンネルを確認する
1 | flutter channel |
チャンネルをmasterへ変更する
1 | flutter channel master |
別チャンネルを使う場合は、アップグレードする
1 | flutter upgrade |
Flutterで、ドロップダウンメニューを作ってみた
リストから、フォントサイズを選択できるようにする
1 | // 選択肢のフォントサイズ一覧を作成 (14〜50) |
Flutterで用意されているマテリアルアイコンを使う
コード例
1 | Row( |
Font Awesomeを使う
1 | import 'package:font_awesome_flutter/font_awesome_flutter.dart'; |
ダークテーマに対応するには、MaterialAppに、ダークテーマ用のThemeDataを設定するだけ
Android OSの設定で、ダークテーマを適用すると、自動的に切り替わる
1 | MaterialApp( |
ファイルを新規作成
android/app/proguard-rules.pro
1 | #Flutter Wrapper |
ビルド設定
android/app/build.gradle
1 | android { |
ユーザーがWebページにアクセスすることで不正なスクリプトが実行されてしまう脆弱性または攻撃手法
攻撃者による不正ログイン(なりすまし)
利用者のCookieが攻撃者の手に渡ることで、Cookie内にある利用者のセッション情報がそのまま使用されてしまい、利用者の名をかたってサービスを使用されてしまう危険性があります。
Webページに出力するデータのエスケープ処理
Webページの出力に際して特別な意味を持つ文字列(例えば「<」、「&」など)は単なる文字列として出力するようにしましょう。また、エスケープの対象としては、利用者が画面から入力した値はもちろん、外部システムからのデータなどWebページの出力対象となるものは必ずエスケープすることが重要
Webアプリケーション利用者自身が意図しない処理が実行されてしまう脆弱性または攻撃手法
利用者の意図しないWebアプリケーション上の処理実行
図でも表したように、本来はログインした利用者のみが許される記事の投稿処理などがあげられます。
Formページ返却時のトークン付与
今回の例でいうと、はじめに掲示板への書き込み画面を表示する際にサーバがクライアントに対して特定の文字列(トークン)を設定します。実際に書き込みのリクエストがあった際にサーバーが「この人に送ったトークンと同じトークンがリクエストに入ってる?」と確認することで、攻撃者からの不正なリクエストを防ぐことができます。これは、攻撃者は利用者に送信したトークンの値を知らないためです
観点 | XSS | CSRF |
---|---|---|
実行される場所 | Webブラウザ(Client) | Webアプリサーバ(Server) |
実行可能な処理 | 基本的に自由*1 | Webアプリで定義された処理 |
実行の前提 | 特になし | Webアプリにログイン済み*2 |
*1 JavaScriptで実行可能な範囲であればという意味です
*2 Webアプリ利用者(被害者)がCSRF脆弱性を持つWebアプリケーションに対してログイン済みという意味です
次のように、CookieをHTTPレスポンスヘッダーで送るときにhttponly属性を付けると、そのCookieはJavaScriptからはアクセスできなくなる。
1 | Set-Cookie: a=apple; httponly; path=/ |
httponly属性により、悪意のあるJavaScriptからCookieを守ることができる。
Internet Explorer 8 など、一部の古いブラウザでは、HTML構文を含むファイルをHTML として
誤ってレンダリングする場合があります。
このため、悪意あるユーザがJSON レスポンスに悪意あるHTML構文の挿入に成功した場
合、XSSが発火する可能性があります。
全てのJSONレスポンスのHTTPヘッダに以下のようなヘッダを設定することで XSS のリスクを緩和できます。
1 | X-Content-Type-Options: nosniff |
(XXXは任意のファイル名)
X-Content-Typeでコンテンツ種別の推論を無効化することで、誤ってHTML として表示される事を防止します。
Content-Dispositionでダウンロードファイルとして明示することでブラウザでのレンダリングを防止します。
Update your browser to view this website correctly. Update my browser now