后端常见安全措施
后端常见安全措施
这里并不是专门做安全的专业的,而是作为一个开发人员应该了解的安全方面。
服务器安全
POST 为什么会发送两次请求 同源策略以及规避
SSH审计工具jtesta/ssh-audit 可以看主机的SSH安全策略和漏洞
小团队VPN和防火墙选型
#todo 几人的小团队使用的软件VPN和防火墙,原则是持久不过期,能一直用,安全性够用就行。还有防火墙的软硬件区别
后端常用加密解密
#todo 关于常见的加密解密,非安全开发者应该知道的方法,性能,安全性,哪些部分可公开 常用的整个表格
AES加密解密,和通用公司对接的时候要求用户名和密码都加密传输,所以前端需要从可信服务器搞密钥,然后进行加密传后端之后解密
使用XOR
这是一种简单的加密方式,加密出来也不会太长,适合加密身份证等有点重要但是又没那么重要的,前面显示的是密文,后端拿到手动解密出来。几乎不会性能造成瓶颈。
以后写详细的东西,先把代码放出来。
# -*- coding: utf-8 -*-
import binascii
# XOR加密函数,返回十六进制字符串
def xor_encrypt(data: str, key: str) -> str:
key_bytes = key.encode('utf-8')
encrypted_data = bytearray()
# XOR操作
for i, char in enumerate(data):
encrypted_data.append(ord(char) ^ key_bytes[i % len(key_bytes)])
# 将加密数据转换为十六进制字符串
return binascii.hexlify(bytes(encrypted_data)).decode('utf-8')
# XOR解密函数,接受十六进制字符串
def xor_decrypt(encrypted_data: str, key: str) -> str:
encrypted_data_bytes = binascii.unhexlify(encrypted_data)
key_bytes = key.encode('utf-8')
decrypted_data = ""
# XOR解密操作
for i, byte in enumerate(encrypted_data_bytes):
decrypted_data += chr(byte ^ key_bytes[i % len(key_bytes)])
return decrypted_data
# 加密身份证号的函数
def encrypt_idnum(idnum: str, key: str) -> str:
if len(idnum) != 18:
raise ValueError("身份证号码必须为18位")
# 获取第7到第18位
idcard_to_encrypt = idnum[6:18]
# 加密第7到第18位
encrypted_part = xor_encrypt(idcard_to_encrypt, key)
# 返回加密后的身份证号码 (前6位 + 加密部分 + 后4位)
encrypted_idcard = idnum[:6] + encrypted_part + idnum[18:]
return encrypted_idcard
# 解密身份证号的函数
def decrypt_idnum(encrypted_idnum: str, key: str) -> str:
if len(encrypted_idnum) < 18:
raise ValueError("加密后的身份证号码长度不正确")
# 获取加密部分的长度
encrypted_part_length = (len(encrypted_idnum) - 6) # 4是后4位身份证号(年份等)
# 获取加密后的部分
encrypted_part = encrypted_idnum[6:6 + encrypted_part_length]
# 解密加密部分
decrypted_part = xor_decrypt(encrypted_part, key)
# 返回解密后的身份证号码(前6位 + 解密部分 + 后4位)
decrypted_idcard = encrypted_idnum[:6] + decrypted_part
return decrypted_idcard
# # 示例使用
# idcard = "123456199012345678" # 身份证号
idnum_secret_key = "rL?viM3^zqp+Er!k~2" # 密钥
#
# # 加密
# encrypted_idcard = encrypt_idnum(idcard, idnum_secret_key)
# print(f"Encrypted IDCard: {encrypted_idcard}")
#
# # 解密
# decrypted_idcard = decrypt_idnum(encrypted_idcard, idnum_secret_key)
# print(f"Decrypted IDCard: {decrypted_idcard}")
SSH
Last Edit: 2025-04-13 22:01:52
Loading...