Что такое код gethostbynamel


Gethostbynamel

Php функции


Php скрипты


gethostbynamel

(PHP 3, PHP 4, PHP 5)

gethostbynamel — Get a list of IP addresses corresponding to a given Internet host name

Description

array gethostbynamel ( string hostname )

Returns a list of IP addresses to which the Internet host specified by hostname resolves. Returns FALSE if hostname could not be resolved.

Пример 1. gethostbynamel() example

$hosts = gethostbynamel ( ‘www.example.com’ );
print_r ( $hosts );
?>

The printout of the above program will be:

Array ( [ 0 ] => 192.0.34.166 )

User Contributed Notes

mitch <> aka-root.com
08-Feb-2006 04:23

Bug found in versions php4.4.0-4.4.2 (no newest in 4.4.x when i write this)

if domain does not exist, gethostbyname retourn local server ip, in 4.3.x branch in this case retourn equal input string.

u can check it by this simple code :)

$str = ‘any-not-valid-domain.com’ ;
$ip 4 = gethostbyname ( $str );
print » [ $str ] [ $ip 4 ]
» ;
?>

webdev at concraption dot com
19-Sep-2005 10:25

In PHP 5.0.4, gethostbynamel returns an empty string instead of false if the lookup fails. A simple workaround for this error is to use is_array () in an IF block:

$hosts = gethostbynamel ( $hostname );
if ( is_array ( $hosts )) <
echo «Host » . $hostname . » resolves to:

» ;
foreach ( $hosts as $ip ) <
echo «IP: » . $ip . «
» ;
>
> else <
echo «Host » . $hostname . » is not tied to any IP.» ;
>
?>

php at silisoftware dot com
04-Dec-2004 04:39

This is a replacement for gethostbynamel(), for *nix only, which uses the «host» program to lookup hostnames. Most people won’t need this, but I had a temporary server problem where all the PHP DNS lookup functions were failing, so this works as a direct replacement:

function SafeGetHostByNameL( $hostname ) <
if (false) < // put conditional check here to use normal gethostbynamel ()
return gethostbynamel ( $hostname );
> elseif ( ereg (‘ [ 0-9 ] < 1,3 >(\. [ 0-9 ] < 1,3 >) < 3 >‘, $hostname )) <
return array ( $hostname );
> else <
$response = trim (`host $hostname `);
if ( preg_match_all (‘/( [ a-z0-9\.\- ] * is an alias for ( [ a-z0-9\.\- ] *)\. [ ‘.» \r\n».’ ] +)* [ a-z0-9\.\- ] * has address ( [ 0-9 ] +\. [ 0-9 ] +\. [ 0-9 ] +\. [ 0-9 ] +)/’, trim ( $response ), $matches , PREG_PATTERN_ORDER)) <
return $matches [ 3 ] ;
> elseif ( eregi (‘ˆHost ‘. $hostname .’ not found’, $response , $matches )) <
return false;
>
>
return false;
>
Skyld at o2 dot co dot uk
25-Sep-2004 12:45

Obviously, in some cases, not all IPs are likely to be useful while checking a hostname. Sometimes also, not all IPs will work. This code will check for the first WORKING IP from the list. Or at least it should — I haven’t had time to test it yet.
Needs domain parameter, and port and max IPs to check are optional.
If port is not set, it will check HTTP port 80, and if max IPs to check is not set, it will only check the first 10 IPs from the list.
Hope it helps someone.

альтернативный способ или функция для gethostbyaddr () [duplicate]

Как я могу узнать домен для IP через PHP?

Я использовал этот код

Но он работает неправильно. Например:

доменное имя — earthwar.de, но правильный ответ — german-proxy.de

4 ответа

Один IP-адрес может содержать потенциально неограниченное количество доменов. Домены, возвращенные gethostbyaddr , будут указывать имена доменов из записей DNS PTR для этого IP-адреса. Обратная запись DNS (PTR) отображает IP-адреса для одного или нескольких доменных имен.

Одной из таких компаний, которая предоставляет информацию о доменах по IP-адресам, является domaintools.com. Вы можете заплатить за такую ​​информацию, которую они собрали. Если имя домена отсутствует в записи PTR, то единственным способом узнать, какие домены находятся на IP-адресе, является попытка разрешить имена доменов на их IP-адреса и вести учет. AFIK нет другого способа.

Данные с обратной IP-поиск по инструментам домена основан на их добыче, сборе и исследованиях.

difference between gethostbyname and gethostbynamel

What is difference between gethostbyname() and gethostbynamel() PHP function? As both returns A record for a domain name. Also which one perform better?

1 Answer 1

based on the documentation gethostbynamel returns the full list of resolved ip address of a specific hostname. where gethostbyname only returns one.

for an example try gethostbynamel(‘www.google.com’); so you will see a list returned.

Not the answer you’re looking for? Browse other questions tagged php or ask your own question.

Hot Network Questions

Subscribe to RSS

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.11.12.35412

gethostbyaddr Как я могу узнать домен для IP через PHP?

php dns srv (4)

Как я могу узнать домен для IP через PHP?

Я использовал этот код

Но это работает неправильно. Например:

доменное имя earthwar.de, но правильный ответ — german-proxy.de

Answer #1

Могут быть МНОГИЕ имена -> IP-сопоставления, но только ONE IP-> name mapping. Это не редкость, когда вы используете хост-хост-> ip-> host lookups. Вы не можете определить, какое имя хоста указано пользователем, если только протокол, который они используют, не передает это имя хоста вместе с запросом, например, http 1.1. Большинство протоколов работают исключительно с IP-адреса и не нуждаются / заботятся о именах хостов.

Answer #2

Один IP-адрес может содержать потенциально неограниченное количество доменов. Домены, возвращаемые gethostbyaddr будут gethostbyaddr доменные имена из записей PTR DNS для этого IP-адреса. Обратная запись DNS (PTR) отображает IP-адреса для одного или нескольких доменных имен.

Одной из таких компаний, которая предоставляет информацию о доменах по IP-адресам, является domaintools.com. Вы можете заплатить за такую ​​информацию, которую они собрали. Если имя домена отсутствует в записи PTR, то единственным способом узнать, какие домены находятся на IP-адресе, является попытка разрешить имена доменов на их IP-адреса и вести учет. AFIK нет другого пути.

Данные обратного IP-поиска по инструментам домена основаны на их добыче, сборе и исследованиях.

Answer #3

Ваш PHP правильный, earthwar.de — правильный ответ

Это, конечно же, не означает, что другие имена (например, german-proxy.de) не указывают на один и тот же адрес, но нет способа найти их все.

так что это хороший пример. Факт: Там нет ничего, а я могу сделать это, чувак!

Answer #4

Вы не можете доверять имени, возвращенному gethostbyaddr . DNS-сервер с полномочиями на определенный IP-адрес может вообще вернуть любое имя хоста.

Обычно администраторы настраивают DNS-серверы для ответа с правильным именем хоста, но злоумышленник может настроить свой DNS-сервер для ответа с неправильными именами хостов. Вы можете избежать попадания в эту ловушку, когда вы вызываете gethostbyname на имя хоста, возвращаемое из gethostbyaddr, и убедитесь, что имя разрешает исходный IP-адрес.

Но есть еще . иногда одно имя хоста может сопоставляться с несколькими IP-адресами.

В общем, вам нужно узнать о копании DNS и обратном DNS-поиске. Это долгий путь, чтобы идти, но вы можете доверять мне, когда я говорю, что это интересно.

Что такое код gethostbynamel

(PHP 3, PHP 4, PHP 5)

gethostbynamel — Get a list of IP addresses corresponding to a given Internet host name

Description array gethostbynamel ( string hostname )

Returns a list of IP addresses to which the Internet host specified by hostname resolves. Returns FALSE if hostname could not be resolved.

Пример 1. gethostbynamel() example

= gethostbynamel ( ‘www.example.com’ );
print_r ( $hosts );
?>

The printout of the above program will be:

Array ( [0] => 192.0.34.166 )

Пред. Начало След.
gethostbyname Уровень выше getmxrr

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

PHP gethostbyname security implications

I’m working on a PHP application. There is a requirement to find IP’s by hostname and i have to resort to gethostbynamel for that. Looks like there is no other way.

I was wondering if there are any security implications related to this. I am validating the hostname given as input from end-user by using regular expressions.

I have two options:

  1. When user submits a form with hostname, val >gethostbynamel
  2. When user submits a form with hostname, val >gethostbynamel

Will there be any difference in the above methods?

Security is top priority for the application.

Я работаю над PHP-приложением. Существует требование найти IP-адрес по имени хоста, и я должен прибегнуть к gethostbynamel для этого. Похоже, что другого выхода нет.

Мне было интересно, есть ли какие-либо последствия для безопасности, связанные с этим. Я проверяю имя хоста, данное как вход от конечного пользователя, используя регулярные выражения.

У меня есть два варианта:

  1. Когда пользователь отправляет форму с именем хоста, проверить его и использовать gethostbynamel
  2. Когда пользователь отправляет форму с именем хоста, проверить его хранить в базе данных и использовать хроны работу, которая пробеги gethostbynamel

Будет ли какая-либо разница в вышеуказанных методах?

Безопасность является главным приоритетом для приложения.

Создан 20 сен. 13 2013-09-20 10:18:34 david

gethostbynamel

(PHP 4, PHP 5, PHP 7)

gethostbynamel — Get a list of IPv4 addresses corresponding to a given Internet host name

Description

Returns a list of IPv4 addresses to which the Internet host specified by hostname resolves.

Parameters

Return Values

Returns an array of IPv4 addresses or FALSE if hostname could not be resolved.

Examples

Example #1 gethostbynamel() example

The above example will output:

See Also

  • gethostbyname() — Get the IPv4 address corresponding to a given Internet host name
  • gethostbyaddr() — Get the Internet host name corresponding to a given IP address
  • checkdnsrr() — Check DNS records corresponding to a given Internet host name or IP address
  • getmxrr() — Get MX records corresponding to a given Internet host name
  • the named(8) manual page

User Contributed Notes 5 notes

If using gethostbyname against the name of the localhost is always giving you 127.0.0.1 but you want the DNS address instead, just put a dot at the end of the name. E.g.,

. is giving you this:
Array
(
[0] => 127.0.0.1
)

Then put a dot at the end of the name:

. and now you get something like:
Array
(
[0] => 172.217.1.99
)

In PHP 5.0.4, gethostbynamel returns an empty string instead of false if the lookup fails. A simple workaround for this error is to use is_array() in an IF block:

Obviously, in some cases, not all IPs are likely to be useful while checking a hostname. Sometimes also, not all IPs will work. This code will check for the first WORKING IP from the list. Or at least it should — I haven’t had time to test it yet.
Needs domain parameter, and port and max IPs to check are optional.
If port is not set, it will check HTTP port 80, and if max IPs to check is not set, it will only check the first 10 IPs from the list.
Hope it helps someone.

function checkhostlist ( $domain , $port = 80 , $maxipstocheck = 10 ) <
� $hosts = gethostbynamel ( $domain );
for ( $chk = 0 ; $chk $maxipstocheck ; $chk ++) <
if (isset( $hosts [ $chk ])) <
$th = fsockopen ( $domain , $port );
if ( $th ) <
fclose ( $th );
return $hosts [ $chk ];
break;
>
>
>
>
?>

The solution is simpel. Just add a . (point) to the end of the URL for correct name resolving.

Without this point PHP thinks it’s a subdomain of your local domain and so returns the «local-IP».

PHP gethostbyname последствия для безопасности

Я работаю над приложением PHP. Существует требование, чтобы найти IP по имени хоста, и я должен прибегнуть к gethostbynamel для этого. Похоже, другого пути нет.

Мне было интересно, есть ли какие-либо последствия для безопасности, связанные с этим. Я проверяю имя хоста, указанное как ввод от конечного пользователя, используя регулярные выражения.

У меня есть два варианта:

  1. Когда пользователь отправляет форму с именем хоста, проверьте ее и используйте gethostbynamel
  2. Когда пользователь отправляет форму с именем хоста, проверьте ее, сохраните в базе данных и используйте задание cron, которое запускает gethostbynamel

Будет ли какая-либо разница в вышеуказанных методах?

Безопасность является главным приоритетом для приложения.

1 ответ

Функция php gethostbynamel — это оболочка над собственной функцией ОС gethostbyname .
Реализацию можно увидеть здесь .

Таким образом, те же уязвимости, которые применяются к системному вызову gethostbyname , будут применяться к вашему коду. Я не вижу ни одной существующей уязвимости gethostbyname , которая беспокоила бы меня.

Итак, если вы точно проверяете имена хостов, все будет в порядке.
Посмотрите этот SO ответ и этот текст для справки по регулярным выражениям.

Среди двух опций, которые вы опубликовали, они не имеют никакого значения с точки зрения безопасности. gethostbyname — это сетевой вызов, поэтому с ним связано ничтожное время. Это может быть одним из отличий, почему вы решили использовать один над другим.

gethostbynamel

gethostbynamel — Возвращает список адресов IPv4, соответствующих переданному доменному имени узла

Описание

Возвращает список адресов IPv4, в которые разрешается доменное имя узла hostname .

Список параметров

Возвращаемые значения

Возвращает массив адресов IPv4 или FALSE , если hostname не может быть разрешено.

Примеры

Пример #1 Пример использования функции gethostbynamel()

Результат выполнения данного примера:

Смотрите также

  • gethostbyname() — Получает адрес IPv4, соответствующий переданному имени узла интернета
  • gethostbyaddr() — Получает доменное имя узла, соответствующее переданному IP-адресу
  • checkdnsrr() — Проверяет записи DNS, соответствующие переданному имени узла интернета или IP-адресу
  • getmxrr() — Получает запись MX, соответствующую переданному доменному имени узла
  • the named(8) manual page

Коментарии

Obviously, in some cases, not all IPs are likely to be useful while checking a hostname. Sometimes also, not all IPs will work. This code will check for the first WORKING IP from the list. Or at least it should — I haven’t had time to test it yet.
Needs domain parameter, and port and max IPs to check are optional.
If port is not set, it will check HTTP port 80, and if max IPs to check is not set, it will only check the first 10 IPs from the list.
Hope it helps someone.

function checkhostlist ( $domain , $port = 80 , $maxipstocheck = 10 ) <
� $hosts = gethostbynamel ( $domain );
for ( $chk = 0 ; $chk $maxipstocheck ; $chk ++) <
if (isset( $hosts [ $chk ])) <
$th = fsockopen ( $domain , $port );
if ( $th ) <
fclose ( $th );
return $hosts [ $chk ];
break;
>
>
>
>
?>

In PHP 5.0.4, gethostbynamel returns an empty string instead of false if the lookup fails. A simple workaround for this error is to use is_array() in an IF block:

= gethostbynamel ( $hostname );
if ( is_array ( $hosts )) <
echo «Host » . $hostname . » resolves to:

» ;
foreach ( $hosts as $ip ) <
echo «IP: » . $ip . «
» ;
>
> else <
echo «Host » . $hostname . » is not tied to any IP.» ;
>
?>

The solution is simpel. Just add a . (point) to the end of the URL for correct name resolving.

Without this point PHP thinks it’s a subdomain of your local domain and so returns the «local-IP».

If using gethostbyname against the name of the localhost is always giving you 127.0.0.1 but you want the DNS address instead, just put a dot at the end of the name. E.g.,

$foo = gethostbynamel(«myhost.example.com»);
print_r($foo);

. is giving you this:
Array
(
[0] => 127.0.0.1
)

Then put a dot at the end of the name:

$foo = gethostbynamel(«myhost.example.com.»);
print_r($foo);

. and now you get something like:
Array
(
[0] => 172.217.1.99
)

gethost Как я могу узнать домен для IP через PHP?

php check domain exists (4)

Как я могу узнать домен для IP через PHP?

Я использовал этот код

Но это работает неправильно. Например:

доменное имя earthwar.de, но правильный ответ — german-proxy.de

Вы не можете доверять имени, возвращенному gethostbyaddr . DNS-сервер с полномочиями на определенный IP-адрес может вообще вернуть любое имя хоста.

Обычно администраторы настраивают DNS-серверы для ответа с правильным именем хоста, но злоумышленник может настроить свой DNS-сервер для ответа с неправильными именами хостов. Вы можете избежать попадания в эту ловушку, когда вы вызываете gethostbyname на имя хоста, возвращаемое из gethostbyaddr, и убедитесь, что имя разрешает исходный IP-адрес.

Но есть еще . иногда одно имя хоста может сопоставляться с несколькими IP-адресами.

В общем, вам нужно узнать о копании DNS и обратном DNS-поиске. Это долгий путь, чтобы идти, но вы можете доверять мне, когда я говорю, что это интересно.

Могут быть МНОГИЕ имена -> IP-сопоставления, но только ONE IP-> name mapping. Это не редкость, когда вы используете хост-хост-> ip-> host lookups. Вы не можете определить, какое имя хоста указано пользователем, если только протокол, который они используют, не передает это имя хоста вместе с запросом, например, http 1.1. Большинство протоколов работают исключительно с IP-адреса и не нуждаются / заботятся о именах хостов.

Ваш PHP правильный, earthwar.de — правильный ответ

Это, конечно же, не означает, что другие имена (например, german-proxy.de) не указывают на один и тот же адрес, но нет способа найти их все.

так что это хороший пример. Факт: Там нет ничего, а я могу сделать это, чувак!

Один IP-адрес может содержать потенциально неограниченное количество доменов. Домены, возвращаемые gethostbyaddr будут gethostbyaddr доменные имена из записей PTR DNS для этого IP-адреса. Обратная запись DNS (PTR) отображает IP-адреса для одного или нескольких доменных имен.

Одной из таких компаний, которая предоставляет информацию о доменах по IP-адресам, является domaintools.com. Вы можете заплатить за такую ​​информацию, которую они собрали. Если имя домена отсутствует в записи PTR, то единственным способом узнать, какие домены находятся на IP-адресе, является попытка разрешить имена доменов на их IP-адреса и вести учет. AFIK нет другого пути.

Данные обратного IP-поиска по инструментам домена основаны на их добыче, сборе и исследованиях.

Илон Маск рекомендует:  Обрезаем текст определённой длины на PHP
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL