Re: [问题] 跟Web Server之传递资料的方式

楼主: MIM23 (HAWK)   2016-01-19 15:07:46
※ 引述《flyroy (伕莱罗伊)》之铭言:
: 请问大家在写Android时,遇到需传递密码之类的资料是怎么传递
: 目前想法是先用AES加密后在用BASE64加密成字串传到WEB SERVER
: SERVER接到在转回来,有更好的方式可推荐吗?
: 如果与Server连结改用SSL方式传递
: 是不是就可以不用像上面方法这么麻烦?
在internet上传输资料就会有被窃听、窃取的风险
这样的攻击行为通常被称为 中间人攻击 MITM(Man in the middle)
所以为了确保资料安全,通常会使用SSL/TLS协议来做基本的保护
(其实不太想写SSL,因为SSL 3.0也是不安全的,漏洞为Poodle)
使用了TLS协议做传输也不代表资料就是安全的,其实还是会有MITM的问题
只要中间人使用自己的凭证做攻击照样能看到传输的资料
现今的浏览器通常遇到自签的凭证或是不合法的凭证都会跳一个讯息
"此网站的安全性凭证有问题",不过使用者大多还是会按"继续浏览此网站"
所以在Client端的应用程式上我们可以这样做:
1.Https握手时检查Server端给的x509凭证上的公钥是否正确
2.资料本身做加密(对称或非对称加密)
不过之前自己分析了台湾许多的APP(行动银行、行动支付)
行动银行APP也都只有使用SSL/TLS协议而已,而且敏感资料也不加密
只有少数的行动支付APP才有做上面讲的那二种做法
作者: ssccg (23)   2016-01-19 15:20:00
内建的sslsocket连线时会验证凭证是否为OS信任的root CA所签发、凭证中列的domain与要连线的domain是否相符跟浏览器的检查是一样的,通常中间人用自己的凭证是无法成功建立连线的(Android/Java会丢出SSLHandshakeException)只是有些人懒得申请凭证用自签的,然后就照网络上的教学用改写TrustManager和HostnameVerifier才会被攻击这种正确作法是用你说的1把自签的公钥写死在client检查如果用public trust的凭证,通常是没有MITM的问题的
作者: KeySabre (KeySabreur)   2016-01-20 12:56:00
推一下重要的文
作者: flyroy (伕莱罗伊)   2016-01-21 22:41:00
很重要,但我听的雾沙沙...

Links booklink

Contact Us: admin [ a t ] ucptt.com