But is this method less secure?
No, it is not if you use https
. When you use HTTPS
your complete transaction will be encrypted. But as @Esa mentioned it is insecure locally which you can avoid adding a space
before your command so that the command will not be in your command history. If you are worried about exposing the command on the other users ps
than hardening /proc
would help you with that. Follow the link to enable hidepid.
Does curl
send all the data at once, or does it first setup a secure connection, and only then send the USERNAME
and PASSWORD
?
No curl
doesn't send all the data at once. Like other SSL/TLS
connection, curl
will initiate SSL
handshake before passing any data.
You can inspect how your data is transferred with tcpdump
, tshark
or Wireshark
like following, (after running tcpdump/tshark
, run the curl
command)
TCPDUMP
[root@arif]# tcpdump -i eth0 -n src host 192.168.1.1 and dst host 192.168.1.2 and port 443 -XX
Where,
-i
: for listening on a specific interface which is in this case eth0
src host
: Specifying source ip
address
dst host
: Specifying destination ip
address
port
: Specifying port 443
which is the default for SSL
connection. You can change according to your requirement.
XX
: For showing header, packet contents and link level header in HEX and ASCII.
You will start to see gibberish
contents after a few packets. You also can grep
your password from the packet with the following command,
[root@arif]# tcpdump -li eth0 -n src host 192.168.1.1 and dst host 192.168.1.2 and port 443 -XX | grep 'password'
If your password shows up there then your password did not get encrypted before transmission. Otherwise, you are okay.
TSHARK
[root@arif]# tshark -O tls "ip src 192.168.1.1 and ip dst 192.168.1.2" -x
Where,
-O
: for mentioning protocol.
-x
: for see packet contents.
you can grep
your password with the above command too.