前端數(shù)據(jù)加密是個比較有爭議的問題闻丑。從安全的角度來看,涉及到敏感信息的數(shù)據(jù)提交萝嘁,必須不能是明文梆掸。從技術的角度來看,前端加密可有可無牙言,因為在瀏覽器端酸钦,所有的代碼都會暴露給用戶,不論用什么方式加密咱枉,都能看到其加密的算法卑硫。但是,在沒有使用https的情況下蚕断,前端編碼數(shù)據(jù)也可以暫時用一下欢伏。
如使用base64編碼,可以直接在頁面引入相應的庫亿乳。
地址:js-base64
示例:
Base64.encode('dankogai'); // ZGFua29nYWk=
Base64.encode('小飼弾'); // 5bCP6aO85by+
Base64.encodeURI('小飼弾'); // 5bCP6aO85by-
Base64.decode('ZGFua29nYWk='); // dankogai
Base64.decode('5bCP6aO85by+'); // 小飼弾
Base64.decode('5bCP6aO85by-'); // 小飼弾
拼裝數(shù)據(jù)說明:
var ajax_data += "a=" + 123;
ajax_data += "&b=" + '1@@@dwddc&&*';
ajax_data = Base64.encode(ajax_data);
$.ajax({
type: 'POST',
url: '',
data: ajax_data
});
后端解析硝拧,以python為例:
import base64
from urllib import unquote
data_res = {}
ajax_data = base64.b64decode(request.POST.get('ajax_data') or '')
#base64編碼時的提交邏輯
if ajax_data:
ajax_data_arr = ajax_data.split('&')
#將字符串轉為字典格式
for item in ajax_data_arr:
temp = item.split('=')
data_res[temp[0]] = unquote(temp[1])
在文件頭部引入相應的庫。unquote 用來解析urlencode后的數(shù)據(jù)葛假,否則漢字解析會出問題障陶。