Ik ben een Java applicatie aan het schrijven met een web interface, die via een socket met een PHP script wordt aangestuurd. Dat gaat goed, maar ik wil nu zorgen dat alleen het PHP script toegang heeft tot bepaalde commando's. Zodat niet iedereen "STOP" naar mijn app kan sturen zeg maar.
Natuurlijk ga ik een soort handshake met wachtwoord implementeren, maar het leek me ook makkelijk om gewoon te controleren of de client aan de andere kant van de socket de localhost is. Mijn idee:
Die geeft false. Debuggen:
Output:
Localhost address: 192.168.1.100
Connection established with: 127.0.0.1
De PHP verbinding komt dus logischerwijs van 127.0.0.1, maar de getLocalHost functie geeft mijn IP-adres op mijn thuisnetwerk terug (ik test offline met XAMPP). Ik had verwacht dat die 127.0.0.1 zou geven.
Je vraagt je misschien af, waarom zo moeilijk doen? Check gewoon of het adres van de client 127.0.0.1 is!
Output: false. Werkt dus niet
En dat terwijl getHostAddress precies die String teruggeeft.
Hoe krijg ik dit eenvoudige klusje wel voor elkaar?
Natuurlijk ga ik een soort handshake met wachtwoord implementeren, maar het leek me ook makkelijk om gewoon te controleren of de client aan de andere kant van de socket de localhost is. Mijn idee:
Java:
1
| private boolean isLocalHost = socket.getInetAddress().isAnyLocalAddress(); |
Die geeft false. Debuggen:
Java:
1
2
3
4
5
6
7
8
| this.address = socket.getInetAddress(); try { System.out.println("Localhost address: " + InetAddress.getLocalHost().getHostAddress()); } catch (UnknownHostException e) { e.printStackTrace(); } System.out.println ("Connection established with: " + this.address.getHostAddress()); } |
Output:
Localhost address: 192.168.1.100
Connection established with: 127.0.0.1
De PHP verbinding komt dus logischerwijs van 127.0.0.1, maar de getLocalHost functie geeft mijn IP-adres op mijn thuisnetwerk terug (ik test offline met XAMPP). Ik had verwacht dat die 127.0.0.1 zou geven.
Je vraagt je misschien af, waarom zo moeilijk doen? Check gewoon of het adres van de client 127.0.0.1 is!
Java:
1
| System.out.println(this.address.getHostAddress() == "127.0.0.1"); |
Output: false. Werkt dus niet
Hoe krijg ik dit eenvoudige klusje wel voor elkaar?