[Security] その他: メールヘッダインジェクション・非推奨関数・XXE対策
- Dominant language
- PHP
- Stars
- 92
- Forks
- 97
- Avg merge
- 4d 2h
- Merged PRs (30d)
- 9
Description
## 概要
メール送信機能のヘッダインジェクション、非推奨のSQL関数の使用、XML処理における外部エンティティ無効化の不足など、複数の軽微なセキュリティ改善事項が存在します。
## 深刻度: Medium / Low
## 脆弱性詳細
### 1. [Medium] メールヘッダインジェクション
**ファイル:** `data/class/SC_SendMail.php` (L150-151)
```php
public function setSubject($subject)
{
$this->subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\n");
$this->subject = str_replace(["\r\n", "\r"], "\n", $this->subject);
}
```
**問題点:** 改行除去がMIMEエンコード後に行われており、エンコード前の改行が残る可能性
**修正案:**
```php
public function setSubject($subject)
{
$subject = str_replace(["\r\n", "\r", "\n"], ' ', $subject);
$this->subject = mb_encode_mimeheader($subject, 'ISO-2022-JP-MS', 'B', "\n");
}
```
### 2. [Low] 非推奨の `sfQuoteSmart()` 関数使用
**ファイル:**
- `data/class/util/SC_Utils.php` (L1203-1214)
- `data/class/helper/SC_Helper_DB.php` (L1144-1174)
- `data/class/pages/admin/products/LC_Page_Admin_Products_ProductRank.php` (L177, 186, 198)
- `data/class/pages/admin/products/LC_Page_Admin_Products_ClassCategory.php` (L308, 323, 338)
```php
$where = 'category_id = '.SC_Utils_Ex::sfQuoteSmart($parent_category_id);
```
**問題点:** プレースホルダではなく手動エスケープによるSQL構築
**修正案:** プレースホルダベースのクエリに変更
```php
$objDb->sfRankUp('dtb_product_categories', 'product_id', $product_id,
'category_id = ?', [$parent_category_id]);
```
### 3. [Low] Owner's Store のCSRF保護無効化
**ファイル:** `data/class/pages/upgrade/LC_Page_Upgrade_Base.php` (L107-114)
```php
public function doValidToken($is_admin = false)
{
// nothing.
}
```
**修正案:** 代替のCSRF保護(署名付きトークン等)を実装
### 4. [Low] DOMDocument での外部エンティティ無効化未設定
**ファイル:** `data/class/helper/SC_Helper_Transform.php` (L55)
```php
$this->objDOM = new DOMDocument();
@$this->objDOM->loadHTML($source);
```
**修正案:**
```php
libxml_disable_entity_loader(true);
$this->objDOM = new DOMDocument();
@$this->objDOM->loadHTML($source);
```
## 影響範囲
メールスパム送信、SQLインジェクションのリスク(限定的)、XXE攻撃(限定的)。
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.