- Fix RedisCache driver to handle MGET failures gracefully with fallback - Add comprehensive discovery context comparison debug tools - Identify root cause: WEB context discovery missing 166 items vs CLI - WEB context missing RequestFactory class entirely (52 vs 69 commands) - Improved exception handling with detailed binding diagnostics
74 lines
2.7 KiB
Bash
Executable File
74 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Security Configuration Test Script
|
|
# Tests production security configuration
|
|
|
|
GREEN="\e[32m"
|
|
YELLOW="\e[33m"
|
|
RED="\e[31m"
|
|
RESET="\e[0m"
|
|
|
|
BASE_URL="https://localhost"
|
|
USER_AGENT="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
|
|
|
|
echo -e "${YELLOW}Testing Production Security Configuration${RESET}"
|
|
echo "================================================"
|
|
|
|
# Function to test HTTP endpoint
|
|
test_endpoint() {
|
|
local path=$1
|
|
local expected_status=$2
|
|
local description=$3
|
|
|
|
echo -e "\n${YELLOW}Testing: ${description}${RESET}"
|
|
echo "Endpoint: ${path}"
|
|
|
|
response=$(curl -s -o /dev/null -w "%{http_code}" \
|
|
-H "User-Agent: $USER_AGENT" \
|
|
"${BASE_URL}${path}" 2>/dev/null)
|
|
|
|
if [ "$response" = "$expected_status" ]; then
|
|
echo -e "${GREEN}✓ PASS${RESET} - Got expected status: $response"
|
|
else
|
|
echo -e "${RED}✗ FAIL${RESET} - Expected: $expected_status, Got: $response"
|
|
fi
|
|
}
|
|
|
|
# Test blocked routes in production (should return 404)
|
|
echo -e "\n${YELLOW}=== Testing Blocked Routes ===${RESET}"
|
|
test_endpoint "/admin/discovery" "404" "Admin Discovery Route (blocked in production)"
|
|
test_endpoint "/admin/routes" "404" "Admin Routes Route (blocked in production)"
|
|
test_endpoint "/admin/performance" "404" "Admin Performance Route (blocked in production)"
|
|
test_endpoint "/debug" "404" "Debug Route (blocked in production)"
|
|
|
|
# Test IP-restricted routes (should return 403 from external IPs, but might be 200 from localhost)
|
|
echo -e "\n${YELLOW}=== Testing IP-Restricted Routes ===${RESET}"
|
|
test_endpoint "/admin" "200" "Admin Route (IP-restricted, should work from localhost)"
|
|
test_endpoint "/health" "200" "Health Route (IP-restricted, should work from localhost)"
|
|
|
|
# Test normal routes (should work)
|
|
echo -e "\n${YELLOW}=== Testing Normal Routes ===${RESET}"
|
|
test_endpoint "/" "200" "Home Route (should work)"
|
|
test_endpoint "/api/version" "200" "API Version Route (should work)"
|
|
|
|
echo -e "\n${YELLOW}=== Environment Configuration Test ===${RESET}"
|
|
|
|
# Check if APP_ENV is set correctly
|
|
if [ -f .env ]; then
|
|
APP_ENV=$(grep "^APP_ENV=" .env | cut -d'=' -f2)
|
|
APP_DEBUG=$(grep "^APP_DEBUG=" .env | cut -d'=' -f2)
|
|
|
|
echo "APP_ENV: $APP_ENV"
|
|
echo "APP_DEBUG: $APP_DEBUG"
|
|
|
|
if [ "$APP_ENV" = "production" ] && [ "$APP_DEBUG" = "false" ]; then
|
|
echo -e "${GREEN}✓ PASS${RESET} - Production environment correctly configured"
|
|
else
|
|
echo -e "${RED}✗ FAIL${RESET} - Environment not configured for production"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗ FAIL${RESET} - .env file not found"
|
|
fi
|
|
|
|
echo -e "\n${YELLOW}Security test completed.${RESET}"
|
|
echo -e "\n${YELLOW}Note: For full production testing, deploy to production server and test from external IP.${RESET}" |