[2023 3月]却下されたAppleガイドラインの事由について

今まで問題なくアップデートが公開されていたのですが、2023/3 にアップデートを却下されてしまいました。どうも、「webへの無制限のアクセス」と「ユーザ情報の削除」が引っかかった様子。

webへの無制限のアクセス

私のアプリではいわゆる「ユーザ作成コンテンツ」が存在しています。ユーザ同士が投稿しあったり内容を確認できたりするとユーザ作成コンテンツが適応されるのですが、この場合以下の機能を満たす必要が出てきます。例ですが、

  • 他者のコンテンツを非表示にすることが可能
  • 投稿したコンテンツを削除することが可能
  • 有害なユーザをブロックすることが可能
  • 運営者へ連絡する手段が存在する(webページへのリンクでも可)

というように、迷惑な行為から遠ざかるための方法を実装している必要が存在します。

今回これに付随して年齢制限の厳格化があったみたいです。

Guideline 1.2 – Safety – User Generated Content

Your app enables users to post content anonymously but does not have the proper precautions in place.

Next Steps

To resolve this issue, please revise your app to implement all of the following precautions:

Age rating must reflect 17+

App Store Connect の [App情報]の下の方に年齢制限項目があるので編集をクリック。

1つ目のダイアログはそのままに、2つ目のダイアログで無制限のアクセスが含まれますを選択してください。

すると年齢制限が17+と判定されます。調べてみるとTwitterと似たようなアプリだったんですが、そちらも17+みたいですね。

ユーザ情報削除機能を実装する

ユーザがアカウントを作成して使うタイプのアプリやサービスであれば、アカウントの削除(退会)機能も必要だそうです。しかもAppleアカウント認証を行なっている場合は、AppleAccountのトークンリセットに関するAPIを使う必要もあるとのこと。サービス側のデータを削除するだけではダメみたい。

Guideline 5.1.1(v) – Data Collection and Storage

We noticed that your app supports account creation but does not appear to include an option to initiate account deletion.

Apps that support account creation must also offer account deletion to give App Store users more control of the data they’ve shared while using your app.

Next Steps

If your app already supports account deletion, reply to this message and let us know how to locate this feature. If your app does not support account deletion, revise your app to include an option to initiate account deletion and delete all user data you are not legally required to retain.

If you are unable to offer account deletion or need to provide additional customer service flows to facilitate and confirm account deletion, either because your app operates in a highly-regulated industry or for some other reason, reply to this message in App Store Connect and provide additional information or documentation. If you have questions regarding your legal obligations, check with your legal counsel.

Keep these requirements in mind when updating your app to support account deletion:

– Only offering to temporarily deactivate or disable an account is insufficient.

– If users need to visit a website to finish deleting their account, include a link directly to the page on your website where they can complete the process.

– You may include confirmation steps to prevent users from accidentally deleting their account. However, only apps in highly-regulated industries may require users to use customer service resources, such as making a phone call or sending an email, to complete account deletion.

Resources

– Review frequently asked questions and learn more about the account deletion requirements. – Apps that offer Sign in with Apple should use the Sign in with Apple REST API to revoke user tokens.

まとめ

今回ワンタイムトークンのリセットも必要だということでなかなかシビアだなとおもったのですが、近年、不正ログインや情報流出といったニュースを詳しく調べると、APIやOAuthの設計や実装面の脆弱性を突いた攻撃だったりすることがあります。セキュリティはLaravelやRubyOnRailsといった有名なフレームワーク、Firebase等のクラウドサービスを使っていれば何も考えなくていいという説明がネット上で見られたりしますが、そんなことはありません。せめてIPA等の根拠ある且つ優しく説明してくれるところを一度は見てみましょう。