调用API的时候需要认证,直接在暴露在url中肯定不行,先试试MD5加密:
import md5 passwd = md5.md5('fangniu508') print passwd.hexdigest()
输出:4a1ebe10d59f1b149ed6338d9f586679
使用url的时候http://127.0.0.1?username=root&passwd=4a1ebe10d59f1b149ed6338d9f586679
貌似可以?但依然是密码md5值暴露,只要密码不变,MD5值也不会变,别人一复制url就完了,所以不可行。。。
3.加入时间戳
import md5 import time passwd = md5.md5('fangniu508') time_str = time.time() token_str = '%s\%s' %(passwd,time_str) print md5.md5(token_str).hexdigest() print time_str
输出:
8caff0592ed7cc5582e3d83cc103f0bc
1456710878.23
而且,每次运行结果都不一样,因为时间戳一直都在变化,别人复制url就基本上不行;
此外,再加入一个过期时间,基本上就无法暴力破解了
如在服务器端加120秒过期, expire_time = 120,
甚至加入重试次数 retry_count=1,
最后可以保证url不可篡改
不过现在使用hashmac加密API的更多,亚马逊也是,以后再研究研究吧