Open8

疑問集 #皆さんのお知恵、ご知見を伺いたいです

llc_starhacksllc_starhacks

Q. functionsのエンドポイント(URL)がバレたら悪用されないか? #脆弱性

FCM(push通知)を書いたfunctionsをクライアントから叩いているが、
functionsのエンドポイント(URL)がバレたら悪用されないか?

現状: headerにpostを含めている。
functions側のonCallメソッドは認証を包含している
onCallによって、当Firebaseプロジェクトを含んでいないサイトから アクセスしたら弾く?

llc_starhacksllc_starhacks

Q. firebase/messaging, firebase/messaging/sw 違いとは?

firebase/messaging/sw はserviceWoker向けとはあるが、

どちらを置き換えてもさほど変わっていない

llc_starhacksllc_starhacks
  • "firebase/messaging/sw" は、onMessageメソッドなどが搭載されていない
  • 故に、フォアグラウンドは "firebase/messaging" を使う必要がある
llc_starhacksllc_starhacks

Q. if文を包含するメソッド: tryXxxxxxと命名するのはどうだろう?

  tryGetTokenAndPush(mine) {
    if (this.isGranted()) {
      console.log('ONCE処理[mine, fcm.isGranted()]:', mine, this.isGranted());
      this.getToken().then((token) => {
        new FCMtokens([], { parent: mine }).push({ token });
      });
    }
  }
llc_starhacksllc_starhacks

isOpenEditorは常にtrueが入ってくる次のコードがある。

Q. useAppContext()前後に移動するだけで、挙動が違うのはなぜ?

  const ButtonsForFollow = ({
    user, // 相手
    setIsOpenDrawerUsers,
    sx,
    isOpenEditor,
  }) => {
-   const [isOpenDrawerEditUserPrimary, setIsOpenDrawerEditUserPrimary] = useState(isOpenEditor);
    const { mine } = useAppContext();
    if (mine === undefined) return;
+   const [isOpenDrawerEditUserPrimary, setIsOpenDrawerEditUserPrimary] = useState(isOpenEditor);
    console.log('[isOpenDrawerEditUserPrimary]', isOpenDrawerEditUserPrimary);
    return (

前者

  • isOpenDrawerEditUserPrimaryはfalseになる

後者

  • isOpenDrawerEditUserPrimaryはtrueになる
llc_starhacksllc_starhacks
  • そもそもif文書けない
  • 初期値がtrueなのに代入されたものがfalseなのは謎。
  • ちなみにisOpenEditorの条件式が謎を解く鍵のようで、
    • false && true のあとに (fetchが完了するなどして) true && true に変わる条件式をあてていた。
    • これを常にtrueで渡すと問題なくtrueとなった。

結論

console.logさえも信用できない