どこでもサポートのアドオンのnonce生成

どこでもサポートのアドオンのnonce生成

Webサイトやモバイルアプリでは、脅威や悪意のある攻撃からデータを保護するためのセキュリティ対策を行う必要があります。その対策のひとつとして、コンテンツセキュリティポリシー(CSP)がHTMLのスクリプト内に記述されている場合があります。これは、Webサイトやアプリを表示するブラウザーが、サーバーから送信されたスクリプトが信頼できる参照元から送信されたものであることを検証するためのものです。この場合、通常のコードを使用してどこでもサポートのアドオンをWebサイトやアプリに埋め込むことはできません。どこでもサポートのアドオンを埋め込むには、nonce値(一度だけ使われるランダムな値)を生成し、どこでもサポートのコード内のスクリプトの属性内にnonce値が指定されるようにどこでもサポートのコードを編集する必要があります。


nonce値とは
コンテンツセキュリティポリシー(CSP)におけるnonce値とは、一度だけ使用可能で推測するのが難しいランダムなデータの値です。nonce値は128ビットで表すことができます。つまり、約340澗(1澗=1兆×1兆×1兆)という膨大な数字で表すことが可能です。推測するのが難しいランダムな値を生成できます。また、nonce値はページが読み込まれるたびに新しく生成されます。コンテンツセキュリティポリシー(CSP)によるセキュリティ対策を回避した不正な攻撃からWebサイトやアプリを保護するのに役立ちます。


nonce値を利用したセキュリティ対策の仕組み
コンテンツセキュリティポリシー(CSP)を使用するにあたって、HTMLのインラインスクリプトの各ブロックにnonce値を追加します。出力するWebサーバー側のnonce値(コンテンツセキュリティポリシー(CSP)のヘッダーのnonce値)とブラウザー側のnonce値(scriptタグのnonce属性)が一致する場合にのみ、Webサーバーによってスクリプトが実行されます。これにより、信頼できるサーバーとブラウザー間でのデータのやりとりのみが許可されます。クロスサイトスクリプティング(XSS)やデータインジェクション攻撃などの不正な攻撃を検出し、回避するのに役立つ仕組みです。


nonce値の生成方法
Webサーバー側でnonce値を生成します。base64と呼ばれる64種類の文字で変換された、推測するのが難しいランダムな値が生成されます。nonce値は、ページが読み込まれるたびに新しく生成される必要があります。以下はコードの例です:

Node.jsスクリプト

const var = require( 'crypto' );
var.randomBytes(16).toString( 'base64' );
//  '6JDFIvPbrWANKpSJ8vlv6b=='

JavaScript

String nonce = new String(DigestUtils.md5Hex(String.valueOf(new SecureRandom().nextLong())));

Pythonスクリプト

 def GetCspNonce():
   """ランダムなnonce値を出力します。"""
   NONCE_LENGTH = 16
   return base64.b64encode(os.urandom(NONCE_LENGTH))

以上でnonce値の生成は完了です。次の手順は、以下のとおりです:
  1. コンテンツセキュリティポリシー(CSP)のヘッダーの「script-src」において、nonce値を指定します。
  2. 同じnonce値をどこでもサポートのコード内の「script」属性に指定します。


    Zoho CRM 管理者向けトレーニング

    「導入したばかりで基本操作や設定に不安がある」、「短期間で集中的に運用開始できる状態にしたい」、「運用を開始しているが再度学び直したい」 といった課題を抱えられているユーザーさまに向けた少人数制のオンライントレーニングです。

    日々の営業活動を効率的に管理し、導入効果を高めるための方法を学びましょう。

    Zoho CRM Training



              Zoho Desk Resources

              • Desk Community Learning Series


              • Digest


              • Functions


              • Meetups


              • Kbase


              • Resources


              • Glossary


              • Desk Marketplace


              • MVP Corner


              • Word of the Day









                                Resources

                                Videos

                                Watch comprehensive videos on features and other important topics that will help you master Zoho CRM.



                                eBooks

                                Download free eBooks and access a range of topics to get deeper insight on successfully using Zoho CRM.



                                Webinars

                                Sign up for our webinars and learn the Zoho CRM basics, from customization to sales force automation and more.



                                CRM Tips

                                Make the most of Zoho CRM with these useful tips.