如何为通过URL传递变量创建额外的保护?[JavaScript]



我使用的变量通过URL(即".derp.html?name=derp?lname=herp")传递到弹出窗口(使用这些参数在页面上预先填充信息)。虽然这些页面是内部的,但我想创建更多的安全性。我不希望有人输入自己的链接并提交带有虚假值的表格。

我想在打开链接后运行一个函数,打开弹出窗口,并通过变量将参数发送到新窗口,而不是通过URL。但是,我仍然需要向java脚本函数发送值。。。

我还能做些什么来更安全吗?

编辑:那么让我换个说法。。。这不是公开的,这是内部的。我不希望用户试图侵入系统来创建虚假表单。

我不能做服务器端验证,因为我使用的是非常旧的方法,比如IE中的表格数据控制。没有真正的数据库来验证任何东西。

您可以POST这些值,而不是将它们附加到URL。这就是HTML表单的用途。例如:

<form action="derp.html" method="POST" target="myNewWindow">
    <input type="hidden" value="derp" name="name"/>
    <input type="hidden" value="derp" name="lname"/>
    <a href="#" onclick="window.open("myNewWindow");this.parentNode.submit()">Click to open in a new window</a>
</form>

您有两个选项

1) 不使用GET方法(在URL中发送参数),而使用POST方法,参数将不再在HTML URL中,您可以通过Javascript来完成。然而,一个想向你的服务器发送假值的人仍然可以这样做,但这有点困难。

2) 创建一个散列函数(Javascript代码),在提交URL之前对所有参数进行编码,并在服务器端收到后对其进行解码。http://en.wikipedia.org/wiki/Hash_function

无论哪种方式,都不会为您提供100%的安全性,而且您仍然应该在服务器端执行参数验证。

您可以将其更改为发布请求。。。但如果逻辑是正面的,你能做的就只有这些了。。。除了混淆变量名之外。

最新更新