@נר-יצחק כתב באבטחה - באימות דו שלבי / דעתכם... 🪪
:
אגב בניתי בAI איזה PHP קטן שמראה את הכתובת IP של השרת (אני לא לוקח אחריות)
צריך לשים את זה בשרת
<?php
// server_ip.php
// מציג את כתובת ה-IP של השרת (מנסה מספר שיטות — בחר את התוצאה הסבירה ביותר)
function find_server_ips(): array {
$results = [];
// 1) משתני שרת רגילים (Apache / Nginx)
if (!empty($_SERVER['SERVER_ADDR'])) {
$results['SERVER_ADDR'] = $_SERVER['SERVER_ADDR'];
}
if (!empty($_SERVER['LOCAL_ADDR'])) {
$results['LOCAL_ADDR'] = $_SERVER['LOCAL_ADDR'];
}
// 2) שם המחשב מתורגם לכתובת
$hostname = gethostname();
if ($hostname !== false) {
$hostip = @gethostbyname($hostname);
if ($hostip && $hostip !== $hostname) {
$results['gethostbyname(gethostname())'] = $hostip;
}
}
// 3) יצירת socket יציאה כדי לגלות כתובת מקומית (לעיתים נותן הכתובת החיצונית/יציאתית)
// לא שולח נתונים — רק מתחבר ופותח חיבור קצר
$udpTarget = '8.8.8.8:53'; // לא שולחים נתונים, רק משתמשים לגלות הכתובת המקומית
$sock = @stream_socket_client("udp://$udpTarget", $errno, $errstr, 1);
if ($sock !== false) {
$name = @stream_socket_get_name($sock, false); // יחזיר "ip:port"
if ($name !== false) {
$parts = explode(':', $name);
if (filter_var($parts[0], FILTER_VALIDATE_IP)) {
$results['outbound_socket'] = $parts[0];
}
}
fclose($sock);
}
// 4) אם יש הרחבת sockets אפשרות נוספת (יותר "נמוכה")
if (function_exists('socket_create')) {
$s = @socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
if ($s !== false) {
if (@socket_connect($s, '8.8.8.8', 53)) {
if (@socket_getsockname($s, $local_ip)) {
if (filter_var($local_ip, FILTER_VALIDATE_IP)) {
$results['socket_getsockname'] = $local_ip;
}
}
}
@socket_close($s);
}
}
// 5) fallback: local loopback if אין דבר אחר
if (empty($results)) {
$results['fallback'] = '127.0.0.1';
}
return $results;
}
$ips = find_server_ips();
// בחר "המועמד הטוב ביותר" לפי עדיפות — אם יש SERVER_ADDR השתמש בו, אחרת outbound_socket, אחרת כל מה שיש
$preferred = null;
if (!empty($ips['SERVER_ADDR'])) {
$preferred = $ips['SERVER_ADDR'];
} elseif (!empty($ips['outbound_socket'])) {
$preferred = $ips['outbound_socket'];
} else {
// קח את הערך הראשון ברשימה
$preferred = reset($ips);
}
?>
<!doctype html>
<html lang="he" dir="rtl">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>כתובת IP של השרת</title>
<style>
body{font-family: Arial, "Segoe UI", sans-serif; direction: rtl; text-align: right; padding:20px;}
.card{display:inline-block;padding:18px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,0.08);}
.title{font-size:18px;margin-bottom:8px;}
.ip{font-size:28px;font-weight:700;margin-bottom:6px;}
.note{font-size:12px;color:#555}
table{margin-top:12px;border-collapse:collapse;}
td,th{padding:6px 10px;border:1px solid #eee;}
</style>
</head>
<body>
<div class="card">
<div class="title">כתובת ה-IP של השרת (מועמד)</div>
<div class="ip"><?= htmlspecialchars($preferred) ?></div>
<div class="note">הצגה מבוססת על כמה שיטות — בדוק את הטבלה למטה עם כל התוצאות שהתקבלו.</div>
<table>
<thead>
<tr><th>שיטה</th><th>כתובת</th></tr>
</thead>
<tbody>
<?php foreach ($ips as $method => $ip): ?>
<tr>
<td><?= htmlspecialchars($method) ?></td>
<td><?= htmlspecialchars($ip) ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<p class="note">
חשוב: אם השרת עומד מאחורי NAT/로드-בלנסר/פרוקסי, הכתובת המוצגת כאן יכולה להיות הכתובת הפרטית או הכתובת היציאתית ולא תמיד הכתובת הציבורית הזמינה מהאינטרנט. אם תרצה את ה-IP הציבורי המדויק שנראה מבחוץ, אפשר לבצע קריאת HTTP לשירות חיצוני (למשל "ifconfig.co") — אך זה דורש גישה חיצונית לאינטרנט.
</p>
</div>
</body>
</html>
אפשר גם לגלוש מהדפדפן, ולבדוק בכלי מפתחים (F12) לאיזה כתובת זה ניגש
או תשתמש עם אחד מהעשרות כלים שיש ברשת למצוא כתובת IP לפי דומיין
