3

我正在浏览我的应用程序,试图尽可能多地保护它,这让我开始思考。我总是验证用户的输入并且总是清理输入,例如,如果我有一个“生日”字段,我会在将其放入数据库之前确保它是一个有效的日期。但是我的数据库中也有像“passwordresettoken”这样的字段,如果用户请求,我的代码会生成这个字段。

现在在我的普通用户个人资料页面上,我显然没有名为“passwordresettoken”的字段,所以我不验证或清理它,因为它不应该存在于将要传递的表单中。事实上,它永远不应该被传递,因为它不是用户输入的东西。

所以我的问题是,是否可以欺骗输入字段?他们是否可以编辑我页面上的 HTML 以包含密码重置令牌字段,然后在传递表单时造成一些损害?

4

1 回答 1

5

是的,一点没错。我什至不必查看您的 HTML。我可以直接使用 curl 提交。

http://curl.haxx.se/docs/httpscripting.html

这个 html

    <form method="POST" action="junk.cgi">
      <input type=text name="birthyear">
      <input type=submit name=press value=" OK ">
    </form>

相当于这个 curl 请求

curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/junk.cgi
于 2013-04-15T22:42:40.273 回答