SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트). 전체 코드리뷰에서 도출된 보안 하드닝 10건 반영: - 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시) - 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php) - 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점) - CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php) - 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화 _backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
24 lines
746 B
PHP
24 lines
746 B
PHP
<?php
|
|
/* php_verify.php - 펌웨어 wire 계약 교차검증 하네스.
|
|
*
|
|
* 서버의 실제 검증 함수(verify_signature_raw)를 그대로 호출한다.
|
|
* 사용: php php_verify.php <signature_hex> (본문은 stdin)
|
|
* 출력: "OK" 서명 검증 성공
|
|
* "FAIL" 서명 불일치
|
|
* "KEY:<api_key>" (인자 없이 --print-key 시 API_KEY 출력)
|
|
*/
|
|
declare(strict_types=1);
|
|
|
|
$root = dirname(__DIR__, 3); // firmware/test/host -> repo root
|
|
require_once $root . '/php/config.php';
|
|
|
|
if (($argv[1] ?? '') === '--print-key') {
|
|
echo API_KEY;
|
|
exit(0);
|
|
}
|
|
|
|
$sig = $argv[1] ?? '';
|
|
$body = stream_get_contents(STDIN);
|
|
|
|
$_SERVER['HTTP_X_SIGNATURE'] = $sig;
|
|
echo verify_signature_raw($body) ? "OK" : "FAIL";
|