我有一个包含某些元素,输入框,复选框等的表单。我需要加密这些输入框和复选框的名称。我目前正在通过c#使用Rijndael加密/解密方法,但这使得加密名称太长而无法在帖子中传递。有没有更好的方法来获得合适的加密名称?我的目的是在帖子发生之前加密名称,这样如果有人查看名称背后的代码已经加密了。
答案 0 :(得分:4)
这样做你打算做什么?
这不会阻止任何人分析表单或提交欺骗性数据。如果他们查看页面来源并查看<p>Email: <input type='text' name='skhge,f'></p>
,那么他们会很清楚“skhge,f”是电子邮件字段的名称,因此他们只能以该名称提交欺骗数据而不是“电子邮件”。
您对该问题的评论的一个回答似乎暗示您担心在发送给用户时被拦截的表单。如果是这样,请使用SSL。它对两个方向的流量进行加密,因此您可以通过这种方式拦截任何拦截,而隐藏字段名称则根本不提供任何保护。 (我的第一点同样适用于窃听者关于数据的最终预期接收者。)
唯一可能的情况我可以想到这可能有什么好处,如果你担心有人建立机器人向你提交表格,但即便如此,这是错误的方法 - 如果你'加密字段名称,然后每次发送表单时它们都会保持不变,因此机器人只会写入每次提交“skhge,f”而不是“电子邮件”。
要以这种方式阻止机器人,您需要为每个表单提交随机字段名称,而不是加密名称,并且您对使用GUID的建议的回复表明您不想维护'字段名字 - &gt;意思是'发送出来的每张表格的地图。保持这样的地图是唯一会减慢机器人作家的事情,而且,即便这样也不会减慢它们的速度。除非您采取特殊措施来混淆您的表单布局和文本内容(例如垃圾邮件发送者在尝试通过垃圾邮件过滤器传递HTML邮件时使用的那些内容),否则作为机器人编写者,我很容易先请求空白表单提交并关联呈现给用户的文本标签(例如,用户可见文本“Email:”)和相应的输入字段,并获得正确的字段名称(“skhge,f”)。
< / LI>所以我不太清楚你的目的是什么,但我 99%肯定加密字段名称不是最好的方法 - 如果它甚至可以工作
答案 1 :(得分:0)
您可能最好将名称映射到服务器端的随机值。
[lkjgh] = 'username';
[hjsaf] = 'email';
如果重新映射每个请求,查看代码将不会显示任何有价值的信息。
仍然让我想知道,为什么这个要求?通常,SSL可以防止窃听。
答案 2 :(得分:0)
如果您担心某人将输入名称与其携带的值相关联的可能性,为什么不使用guid而不是有意义的变量名称呢?