JS縺?fetch,xhr/iframe/canvas/WebStorage,IndexedDBでクロスオリジンは危髯?
Access-Control-Allow-Originレスポンスヘッダ縺?CORS(cross origin resource sharing)許可を判藹??できる
CSP(Content-Security-Policy)レスポンスヘッダある縺?metaタグで許可するJSを判藹??できる
=========================
2022-04-06
SAML
SSOのログイン状態を保持する認証プロバイダ繝?(IdP)を使い各アプ繝?(ServiceProvider)縺?SSOを実現する
SSOの臀??組みにはエージェント方藹??、リバースプロキシ方藹??、代理認証方藹??な縺?
ユーザ縺?Webサービスにアクセ繧?
WebサービスからSSO認証プロバイダーサーバ縺?SAML認証鐔??求をPostする
SSO認証プロバイダーサーバ縺?SAML認証を解析、ユーザに鐔??証を転送
ユーザはそれ縺?Webサービスにログインする
SAMLはログイン時にユーザー情報をチェック、OAuthはユーザーの情報を登骭?
OAuthはアプリケーションを連動させるAPIで有効なアクセストークンかを見る
アクセストークンには「いつ」「どこで」「なんのために」作られたのか分からない
OpenID縺?IDトークンを使い「いつ」「どこで」「なんのために」作られたのか分かる
OAuth 2.0、OpenID Connect、SAMLを比較
OAuth 2.0:新しいアプリケーションに登録して、新しい連絡先をFacebookや携帯電話の連絡先から自動的に藹??得することに同諢?した場合は、おそら縺?OAuth 2.0が使繧?れています。この觸??準は、安全な藹??任アクセスを觸??供します。つまり、ユーザーが認証情報を共有しな縺?ても、アプリケーションがユーザーに代繧?ってアクションを起こしたり、サーバーからリソースにアクセスしたりすることができます。これは、アイデンティティプロバイダー・??IdP)がユーザーの承鐔??を得て、サードパーティのアプリケーションにトークンを発鐔??できるようにすることで藹??現されます。
OpenID Connect:Googleを使っ縺?YouTubeなどのアプリケーションにサインインしたり、Facebookを使ってオンラインショッピングのカートにログインしたりする場合に使用されるのが、この鐔??証オプションです。OpenID Connectは、組織がユーザーを認証するために使用するオープンスタンダードです。IdPはこれを利用して、ユーザーがIdPにサインインした後、他縺?Webサイトやアプリにアクセスする際に、ログインしたりサインイン情報を共有したりする必要がないようにします。
SAML:SAML認証は、多縺?の場合に臀??事環藹??で使用されます。たとえば、企業のイントラネットやIdPにログインした後、Salesforce、Box、Workdayなどの藹??数の追加サービスに、認証情報を再入力せずにアクセスできるようになります。SAMLは、IdPとサービスプロバイダーの間で鐔??証・鐔??可データを交觸??するため縺?XMLベースの觸??準で、ユーザーのアイデンティティとアクセス許可を検証し、サービスへのアクセスの許藹??/拒否を決藹??します。
OAuth、OpenID Connect、SAMLの違いとは・?? | OktaOath: idpがトークンを発鐔??、Webサイト間でユーザを認識し3rdからでも個人情報を使えるようになる
OpenID(OIDC): idp縺?JWT(トーク繝?)で鐔??証するOauth系縺?SSO、Oauthの拡張でログインが3rdからもできるようになる
SAML: idpで各アプリやAD間をXMLメッセージにより認証管理しSSOを実軆??
OpenID縺?SAMLが同じような觸??閭?
SAMLはユーザ固有の傾向で大企讌?SSOが多い、OpenIDはアプリ固有の傾向縺?Webサイトやモバイルアプリが多い
SAMLよりOIDCの方が新し縺?SPAやスマホと親和性が高い
SaaSとし縺?OpenID縺?Okta縺?idp、SAML縺?PingFederate縺?idpがメジャ繝?
=========================
2016-01-03
■XSS対軆??、CSRF対軆??、脆弱性チェッ繧?
情報処理推進觸??構にチェックリスト有
https://www.ipa.go.jp/security/vuln/websecurity.htmlXSS対軆??
フォーム送信藹??の確認画面で縺?HTMLエスケープ等でサニタイズされた内容の軆??果を表示
DBへのクエリについてはプレースホルダやエスケープ等縺?SQLインジェクションを防ぐ
target="_blank"縺?XSSになるので危ない、rel="noopener noreferrer"を付ける
https://b.hatena.ne.jp/entry/s/webtan.impress.co.jp/e/2020/03/13/35510 https://laboradian.com/test-window-opener/CSRF対軆??
前ページ縺?hidden値を入れる
他
クッキーに具臀??的なものは入れない、Cookie縺?HttpOnly属性、HTTPS通信で縺?secure属諤?
エラーメッセージを表示しない
不要なファイルは削髯?
XMLの藹??部藹??態藹??照は軆??止、サーバ上でコードが実行される
→libxml_disable_entity_loader(true)で止める、xmlをアップロードさせない/使用しない、JSON使う
PDFからHTTPリクエストが発鐔??される
→PDFをアップロードさせない
------
//SQLインジェクション対策
$sql = "UPDATE users SET name='.mysql_real_escape_string($name).'WHERE id='.mysql_real_escape_string ($id).'";
\ " ' を最菴?限、\エスケープ
NUL (ASCII 0) /n /r / ' " およ縺?CTRL+Zをエスケープしたい
//クロスサイトスクリプティング対策
表示時に縺?<>&"をメタ文字へ藹??觸??
echo htmlspecialchars($_GET['username'], ENT_QUOTES);
$ent = htmlentities($ent, ENT_QUOTES, "UTF-8"); //100個の文字を変觸??
//クロスサイトスクリプティング対策
別サイトからのポストを弾縺?
refferを送信しないリクエストもある(別サイトのリファラを弾き、nullもし縺?は適切ページからを許可する)
セッショ繝?IDで判断する
//DOS対軆??
2重ポスト
IPと日臀??縺?2重ポストを防ぐ(同IPのポストがx秒以内を弾く)
■サニタイズの方觸??
DOCには生のテキスト、DB縺?HTMLにはエスケープ済みのものを入れる
窶? 入力があれ縺?htmlエスケープしDBに入れる
窶? html表示はそのま縺?htmlエスケープ状態で出力
窶? Docへ縺?htmlエスケープを解除し表示
窶? htmlフォーム内表示縺?htmlエスケープを解除し表示
htmlエスケープ
https://weblan3.com/html/special-character
バッククォート以藹??は分かり易いで文字表鐔??でエスケープする、改鐔??はエスケープしない
< < < 不等藹??(より蟆?さい)
> > > 不等藹??(より大きい)
& & & アンパサンド
" " " 二重引用符
' ' ' シングルクォート,アポストロフ繧?
; ;: ; セミコロ繝?
\ \ &bsol バックスラッシ繝?
` ` バッククォート
========
■JSONP
scriptタグを使用してクロスドメインなデータを藹??得する仕組みのことである。
HTML縺?scriptタグ、JavaScript(関数・??、JSONを組み合繧?せて藹??現される
GoogleAnalyticsのクッキー縺?1stパーティでサイト側がオーナでありGoogleがオーナーではない
サイト側縺?JSでクッキーが作成されるようなっている
クッキーが送信される相手はどこか?が重要縺?Googleでな縺?サイト側に送信される
アクセス履歴は別途データをGoogleに送信しており、クッキーはセッション管理に使用される
■SSO
色々な方觸??がある、SAMLや、サイトにエージェントを組み込み・??SSO認証サーバ等
ロジックを確鐔??しないと詳し縺?は分からない
=========
■SSL
CAはサーバに証譏?譖?(署名)を発鐔??
====
クライアントが接続要求
サーバが証譏?譖?(署名縺?RSA公開鍵を含む)を送る
クライアントが証譏?書を検險?(
どっち・??
1)署名をルート証譏?書のチェー繝?(RSA公開骰?)で鐔??合化しドメインを確鐔??
該藹??のルート証譏?譖?(RSA公開骰?)がブラウザにないと該当CAに鐔??求?
CRLやOCSPで失効について蝠?合せができるようだがRSA公開鍵の鐔??求は出来なさそう
(ルート証譏?書はブラウザにある結局オレオレ証譏?書に違いない:厳密な審査の臀??で軆??込まれている)
2)クライアントが公開鍵をサーバに送りRSA秘密鍵で暗号化し送り返すとクライアントが複合化し縺?RSA秘密鍵が正しい事を確鐔??
)
クライアントが共通鍵・??セッションキー・??を生成し公開鍵で暗号化し送る
サーバが秘密鍵で共通鍵を複合
以降共通鍵暗号で通菫?
※ホンマか??
====
ホスト(ドメイン・??を持って接続要求をし、暗号化通信藹??にパスやクエリパラメータを送るので、詳細は暗号化され守られている