Javascript Html(表单)注入
我是webdev的新手,我想知道服务器安全有多危险 这样的代码可以没有数据验证吗Javascript Html(表单)注入,javascript,html,post,Javascript,Html,Post,我是webdev的新手,我想知道服务器安全有多危险 这样的代码可以没有数据验证吗 <form id="test" name="test" method="post" action=""> <input type="hidden" value="" name="tst"> <input type="reset" onclick="test.submit()" value="test"> </form> 我知道我们可以注入html代码甚至js脚本
<form id="test" name="test" method="post" action="">
<input type="hidden" value="" name="tst">
<input type="reset" onclick="test.submit()" value="test">
</form>
我知道我们可以注入html代码甚至js脚本,但这对服务器端有危险吗 这里唯一可更改的项是tst字段 作为一般规则,表单中的任何字段都可以由客户端更改(是的,甚至是隐藏字段),因此如果要将所有字段放入数据库,或者使用此字段在服务器上包含()其他项目,则应过滤所有字段(通过PHP中的mysqli::real_escape_string()或其他方法)。如果您只是针对一个条件(并且不会在其他地方使用)抛出字段,则不需要进行筛选,但额外的安全性不会有任何影响
至于注入HTML/JS,它只在其他脚本显示提交的HTML时适用。在这种情况下,请调用htmlspecialchars(_uni)以确保它们不会运行。从这里开始,唯一可更改的项是tst字段 作为一般规则,表单中的任何字段都可以由客户端更改(是的,甚至是隐藏字段),因此如果要将所有字段放入数据库,或者使用此字段在服务器上包含()其他项目,则应过滤所有字段(通过PHP中的mysqli::real_escape_string()或其他方法)。如果您只是针对一个条件(并且不会在其他地方使用)抛出字段,则不需要进行筛选,但额外的安全性不会有任何影响
至于注入HTML/JS,它只在其他脚本显示提交的HTML时适用。在这种情况下,请调用htmlspecialchars(_uni)以确保它们不会运行。用户可以轻松编辑隐藏输入的值,从而很容易损坏您的站点。根据此表单的功能,至少应该添加斜杠和htmlentities。当然,只有当数据被发送到服务器时,这才重要 用户可以很容易地编辑隐藏输入的值,从而很容易对您的站点造成损害。根据此表单的功能,至少应该添加斜杠和htmlentities。当然,只有当数据被发送到服务器时,这才重要 前端表单的实际结构对服务器端安全性没有实际影响。这完全取决于一旦数据被传递,服务器将如何处理数据。使用Firebug、Chrome开发工具等,任何用户都可以在您的网站上从头开始编写、修改和提交表单。或者他们可以直接发送
post/get
变量,而不必看到您的表单前端验证和结构完全是为了提示和帮助用户,而不是为应用程序提供安全性。永远不要相信它会受到用户的尊重
还有,为什么不使用
<input type="submit" value="test">
而不是
<input type="reset" onclick="test.submit()" value="test">
?前端表单的实际结构对服务器端安全性没有实际影响。这完全取决于一旦数据被传递,服务器将如何处理数据。使用Firebug、Chrome开发工具等,任何用户都可以在您的网站上从头开始编写、修改和提交表单。或者他们可以直接发送
post/get
变量,而不必看到您的表单前端验证和结构完全是为了提示和帮助用户,而不是为应用程序提供安全性。永远不要相信它会受到用户的尊重
还有,为什么不使用
<input type="submit" value="test">
而不是
<input type="reset" onclick="test.submit()" value="test">
?任何危险都完全取决于您如何处理收到的数据。如果你完全忽视它,就没有危险。如果你用它做了什么,可能会有,但这取决于你在做什么。任何危险都完全取决于你对收到的数据做了什么。如果你完全忽视它,就没有危险。如果你用它做了一些事情,可能会有,但这取决于你在做什么。“除了提交和重置可以由客户端更改”-什么?编辑这些内容就像打开控制台并单击输入的
值
属性一样简单。“如果你只是将字段抛出一个条件项,那么你不需要过滤”真的吗?因此1或TRUE
从TBL中删除,其中ID=1或TRUE
(转义引号和类似的情况也是如此)。不过,使用预先准备好的语句是另一回事。据我所知,浏览器忽略了这些语句。也许我应该把我的回答改得更好,但谁在乎这两个呢?不是真的。当您通过form.submit()
提交表单时,提交按钮不会序列化,但当您通过具有名称
属性的提交按钮提交表单时,其值也将发送到PHP。当表单中有多个submit按钮并且被一些php框架使用时,这非常有用。谢谢你告诉我:)“除了提交和重置可以由客户端更改”-什么?编辑这些内容就像打开控制台并单击输入的值
属性一样简单。“如果你只是将字段抛出一个条件项,那么你不需要过滤”真的吗?因此1或TRUE
从TBL中删除,其中ID=1或TRUE
(转义引号和类似的情况也是如此)。不过,使用预先准备好的语句是另一回事。据我所知,浏览器忽略了这些语句。也许我应该把我的回答改得更好,但谁在乎这两个呢?不是真的。当您通过form.submit()
提交表单时,提交按钮不会序列化,但当您通过具有名称
属性的提交按钮提交表单时,其值也将发送到PHP。当表单中有多个submit按钮并且被一些php框架使用时,这非常有用。感谢您告诉我:)唯一的验证是,我们不解释php代码,但如果服务器上没有post
处理程序,用户可以“编辑”html代码或添加自己的js代码(即,服务器上没有负责interpr的代码)