0

I'm noobie in webdev, i'm trying to get some information how dangerous for server security coudl be such code with no data validation

<form id="test" name="test" method="post" action="">
<input type="hidden" value="" name="tst">
<input type="reset" onclick="test.submit()" value="test">
</form>

i know we can inject html code or even js script but is it dangerous for server side ?

4

3 回答 3

2

前端表单的实际结构对服务器端的安全性没有真正的影响。这一切都取决于数据传递后服务器对数据的处理方式。使用 Firebug、Chrome 开发工具等,任何用户都可以在您的网站中完全从头开始编写、修改和提交表单。或者他们可以post/get直接发送变量,而无需查看您的表单……前端验证和结构完全是为了提示和帮助用户,而不是为您的应用程序提供安全性。永远不要指望它受到用户的尊重。

另外(旁边),为什么不使用

<input type="submit" value="test">

代替

<input type="reset" onclick="test.submit()" value="test">

?

于 2013-02-28T16:41:42.133 回答
1

从这里唯一可更改的项目是 tst 字段。

作为一般规则,客户端可以更改表单中的任何字段(是的,甚至是隐藏字段),因此您应该过滤所有字段(通过 PHP 中的 mysqli::real_escape_string() 或其他方法)如果它们进入数据库,或者如果您使用此字段来包含()服务器上的一些其他项目。如果您只是针对条件抛出字段(并且不会在其他地方使用),则不需要过滤,但额外的安全性不会受到伤害。

至于注入 HTML/JS 的东西,它只适用于其他脚本显示提交的 HTML 时。在这种情况下,调用 htmlspecialchars(_uni) 以确保它们不会运行。

于 2013-02-28T16:36:38.933 回答
1

用户可以很容易地编辑隐藏输入的值,从而很容易对您的网站造成损害。根据此表单的功能,您至少应该添加斜杠和 htmlentities。当然,这仅在将数据发送到服务器时才重要。

于 2013-02-28T16:38:19.450 回答