IP addresses are more reliable than DNS names, but they can also be
spoofed. Attackers can easily forge the source IP address of the packets
they send, but response packets will return to the forged IP address. To
see the response packets, the attacker has to sniff the traffic between
the victim machine and the forged IP address. In order to accomplish the
required sniffing, attackers typically attempt to locate themselves on
the same subnet as the victim machine. Attackers may be able to
circumvent this requirement by using source routing, but source routing
is disabled across much of the Internet today. In summary, IP address
verification can be a useful part of an authentication scheme, but it
should not be the single factor required for authentication.
Perform proper forward and reverse DNS lookups to detect DNS spoofing.
Many DNS servers are susceptible to spoofing attacks, so you should assume
that your software will someday run in an environment with a compromised DNS
server. If attackers are allowed to make DNS updates (sometimes called DNS
cache poisoning), they can route your network traffic through their machines
or make it appear as if their IP addresses are part of your domain. Do not
base the security of your system on DNS names.