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

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

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

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

### 原因分析
1. **検索エンジンのインデックス登録**:
   - サイト内の検索結果ページがGoogleやBingなどの検索エンジンにインデックスされてしまうことで、特定のキーワードに関連したページが検索結果に表示されます。
   - クエリパラメータ（例: `?keyword=中野哲平`）を含むURLがクロール対象となる場合があります。

2. **適切なメタタグの不足**:
   - `robots.txt`や`meta`タグにより検索エンジンのクロールを制御していないため、検索結果ページがインデックスされてしまうことがあります。
   - 例えば、以下のメタタグがない場合、クローラーが制御できません。
     ```html
     <meta name="robots" content="noindex, nofollow">
     ```

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

## AWSを活用した対策方法

### 1. **AWS WAF（Web Application Firewall）の導入**
AWS WAFを使用して、不適切なクエリパラメータや悪意のあるリクエストをブロックすることができます。

- **対策例**:
  - 特定のクエリパラメータ（例: 個人名など）を含むリクエストをブロック
  - SQLインジェクションやクロスサイトスクリプティング（XSS）を防止するルールを適用

```json
{
  "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でリクエストを検査し、特定のキーワードを含むリクエストをリダイレクト

```python
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**でクエリ実行し、問題のある検索パターンを特定

```sql
SELECT * FROM access_logs
WHERE uri LIKE '%中野哲平%'
LIMIT 100;
```

### 4. **IAMポリシーによるアクセス制御**
AWS IAMを使用して、特定のデータやリソースへのアクセスを制御できます。

- **例**: 特定のS3バケットに対するアクセスを制限
```json
{
    "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の更新**
   - 検索結果ページをクロール対象外に設定
   ```txt
   User-agent: *
   Disallow: /search.aspx
   ```

2. **メタタグの追加**
   - 検索結果ページに`noindex`を設定
   ```html
   <meta name="robots" content="noindex, nofollow">
   ```

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

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