在我的表单中,我必须在hiddenFields div中包含一系列要发送的详细信息。
对于'sender_name','sender_email'和'subject',我想确保这些数据是安全的,无论如何都要帮助停止获取详细信息。
我目前正在使用'base64'对这些进行编码,然后在处理和通过电子邮件发送表单数据之前解码它们。
<form action="" class="" etc>
<div class="hiddenFields">
<input name="sender_name" value="Q2hyaXN0b3BoZXIgWVz" type="hidden">
<input name="sender_email" value="aW5mb0BjJpc2Rhdmllc3dlYmRlc2lnbi50=" type="hidden">
<input name="subject" value="TmV3IENvbnRgRW5xdWlyeQ==" type="hidden">
<input name="required" value="name|email|message" type="hidden">
<input name="return" value="contact-sent" type="hidden">
<input name="ACT" value="66" type="hidden">
<input name="RET" value="index.php/contact" type="hidden">
<input name="site_id" value="1" type="hidden">
<input name="csrf_token" value="7420f717d3135576cd605be5ccc6b92dcc" type="hidden">
</div>
FIELD GO HERE
</form>
有没有人有任何理由这是个坏主意?或者,如果有更好的替代方案来加密数据呢?
答案 0 :(得分:2)
有人有任何理由这是个坏主意吗?
Base64是编码,而不是加密。信息不会被隐藏,它只是以另一种形式表示。 Basicaly任何人都可以获取值并解码为普通字节(字符串,数字,无论它是什么)。
让我们决定您要隐藏的内容和位置。
如果您想隐藏来自任何第三方窃听者(中间人)的数据,只需使用基本TLS(https)即可。它将照顾您的机密性和完整性。
如果要隐藏发送表单的(Web)客户端中的数据,那么最好的选择是在可能的情况下将信息保留在服务器上。
如果必须保持服务器无状态(不在服务器端存储任何内容),则应正确加密数据(这意味着要使用一些密钥,salt,身份验证标记,......)。
如果您不知道从哪里开始,可能会使用一些encrypted JWT token作为发布值,这是安全的选择。