0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SEOにおける個人名(例:中野哲平)の検索ヒット問題とAWSを用いた対策

Posted at

はじめに

近年、SEO(検索エンジン最適化)により、意図しない形で個人名が検索結果に表示されることが増えています。特にオンラインショップやデータベースが公開されている場合、不適切な設定により個人情報が露出するリスクがあります。本記事では、具体例として「中野哲平」という名前が商品検索結果に表示されたケースを分析し、AWSの観点からどのように防ぐべきかを解説します。

ケーススタディ: 中野哲平の検索結果表示

現象の概要

指定されたURL(https://www.movic.jp/shop/goods/search.aspx?keyword=中野哲平%20プロフィール)では
"中野哲平"というキーワードで商品検索を行った結果、意図しないデータが表示される現象が確認されました。このような現象が発生する背景には、以下の要因が考えられます。

原因分析

  1. 検索エンジンのインデックス登録:

    • サイト内の検索結果ページがGoogleやBingなどの検索エンジンにインデックスされてしまうことで、特定のキーワードに関連したページが検索結果に表示されます。
    • クエリパラメータ(例: ?keyword=中野哲平)を含むURLがクロール対象となる場合があります。
  2. 適切なメタタグの不足:

    • robots.txtmetaタグにより検索エンジンのクロールを制御していないため、検索結果ページがインデックスされてしまうことがあります。
    • 例えば、以下のメタタグがない場合、クローラーが制御できません。
      <meta name="robots" content="noindex, nofollow">
      
  3. サーバーサイドでのフィルタリング不足:

    • ユーザー入力に対する適切なサニタイズやフィルタリングが行われていないと、意図しないデータが検索結果に表示される可能性があります。

AWSを活用した対策方法

1. AWS WAF(Web Application Firewall)の導入

AWS WAFを使用して、不適切なクエリパラメータや悪意のあるリクエストをブロックすることができます。

  • 対策例:
    • 特定のクエリパラメータ(例: 個人名など)を含むリクエストをブロック
    • SQLインジェクションやクロスサイトスクリプティング(XSS)を防止するルールを適用
{
  "Name": "BlockSensitiveKeywords",
  "Priority": 1,
  "Action": { "Block": {} },
  "Statement": {
    "ByteMatchStatement": {
      "SearchString": "中野哲平",
      "FieldToMatch": { "QueryString": {} },
      "TextTransformations": [{ "Priority": 0, "Type": "NONE" }],
      "PositionalConstraint": "CONTAINS"
    }
  }
}

2. CloudFrontとLambda@Edgeの併用

AWS CloudFrontとLambda@Edgeを組み合わせて、ユーザーリクエストをエッジロケーションでフィルタリングできます。

  • 実装例:
    • Lambda@Edgeでリクエストを検査し、特定のキーワードを含むリクエストをリダイレクト
def lambda_handler(event, context):
    request = event['Records'][0]['cf']['request']
    querystring = request.get('querystring', '')

    if '中野哲平' in querystring:
        return {
            'status': '403',
            'statusDescription': 'Forbidden',
            'body': 'This content is not available.'
        }

    return request

3. S3 + Athena + Glueでのログ分析

CloudFrontやALBのアクセスログをS3に保存し、AthenaとGlueを使用して検索パターンを分析できます。

  • ステップ:
    1. S3にアクセスログを保存
    2. Glueでカタログ作成
    3. Athenaでクエリ実行し、問題のある検索パターンを特定
SELECT * FROM access_logs
WHERE uri LIKE '%中野哲平%'
LIMIT 100;

4. IAMポリシーによるアクセス制御

AWS IAMを使用して、特定のデータやリソースへのアクセスを制御できます。

  • : 特定のS3バケットに対するアクセスを制限
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-sensitive-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": "*中野哲平*"
                }
            }
        }
    ]
}

SEO対策としての設定変更

  1. robots.txtの更新

    • 検索結果ページをクロール対象外に設定
    User-agent: *
    Disallow: /search.aspx
    
  2. メタタグの追加

    • 検索結果ページにnoindexを設定
    <meta name="robots" content="noindex, nofollow">
    
  3. Google Search Consoleでのインデックス削除

    • 検索エンジンにインデックスされてしまったページをGoogle Search Consoleから削除リクエスト

まとめ

本記事では、SEOにおいて個人名が意図せず検索結果に表示される問題と、AWSを活用した防止策について解説しました。AWS WAFやCloudFront、Athenaなどのサービスを組み合わせることで、不適切なデータ露出を防ぎつつ、検索エンジンのインデックス管理も行うことが可能です。これにより、セキュリティとプライバシーを守りながら、安全なWebサイト運用を実現できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?