4

所以我在 html 中构建了我的表单并在 JS 中进行了验证,它确实并且看起来像我想要的那样。现在显然我将在服务器端使用 PHP 验证输入,但我想知道使用 Ajax 提交表单然后在服务器端验证是否足够安全,而不是使用“提交”类型提交表单按钮和“动作”属性。基本上,使服务器端验证依赖于提交它的 JS 是否安全?

这是我的表格:

<form name="contactForm" id="contactForm"><!-- The form has no action attribute because its submitted via Ajax -->
<div id="inputsWrapper">
    <div>
        <label for="fullName">Your Name: <span class="required">(required)</span></label>
        <input type="text" name="fullName" id="fullName" title="First &amp; last name" value="First &amp; last name" maxlength="50" />
    </div>
    <div>
        <label for="email">Your E-mail: <span class="required">(required)</span></label>
        <input type="text" name="email" id="email" title="E-mail address" value="E-mail address" maxlength="500" />
    </div>
    <div>
        <label for="subject">In Regards To: <span class="required">(required)</span></label>
        <input type="text" name="subject" id="subject" title="Subject" value="Subject" maxlength="50"/>
    </div>
    <div>
        <label for="message">Your Message: <span class="required">(required)</span></label>
        <textarea name="message" id="message" title="Enter your message here" cols="40" rows="10">Enter your message here</textarea>
    </div>
</div> <!-- End inputsWrapper -->
<input type="button" name="sendBtn" id="sendBtn" value="Send Message" /><!-- This button has a listener assigned to it in JS and submits the form on click -->

单击按钮后,Ajax 将通过 POST 将表单提交到我的 PHP 脚本,然后返回有效或无效。这是否是一种安全的方法?谢谢你的任何建议。

4

2 回答 2

5

从安全角度来看,通过 Ajax 或浏览器默认表单发布行为发布它不会产生影响。这些请求都是常规的 HTTP POST/GET 请求。

于 2012-07-26T08:34:00.517 回答
5

我想知道使用 Ajax 提交表单然后在服务器端进行验证是否足够安全,而不是使用“提交”类型按钮和“操作”属性提交表单。

是的。来自系统外部的输入是来自系统外部的输入。

基本上,使服务器端验证依赖于提交它的 JS 是否安全?

您的 JavaScript 应该不显眼并实现渐进增强

脚本的输入应该是相同的,无论它来自使用 Ajax 的常规表单提交(如果您使用jQuery 的 serialize 之类的东西,这将非常容易),因此您不需要让服务器依赖于JS用于响应。

处理表单提交和 Ajax 请求的唯一区别应该是响应的格式。

无论哪种方式,进入系统的数据最终都在提交者的控制之下,因此您需要执行适当的健全性检查并以任何一种方式进行转义。

于 2012-07-26T08:37:20.403 回答