Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何使注册/登录表单在AJAX安全上工作?_Jquery_Ajax_Forms_Security - Fatal编程技术网

Jquery 如何使注册/登录表单在AJAX安全上工作?

Jquery 如何使注册/登录表单在AJAX安全上工作?,jquery,ajax,forms,security,Jquery,Ajax,Forms,Security,我有使用AJAX技术的表单,我想知道会出现哪些安全问题 我知道站点上的所有表单(包括POST、PUT、DELETE方法)都应该有CSRF令牌。(这对登录或注册表单有意义吗?) 我想为您提供一些代码(最简单的代码),让问题变得更大: <form action="" method="" id="login-form"> <input type="email" required="required" placeholder="example" id="use

我有使用AJAX技术的表单,我想知道会出现哪些安全问题

我知道站点上的所有表单(包括POST、PUT、DELETE方法)都应该有CSRF令牌。(这对登录或注册表单有意义吗?)

我想为您提供一些代码(最简单的代码),让问题变得更大:

    <form action="" method="" id="login-form">
         <input type="email" required="required" placeholder="example" id="username">
         <input type="password" required="required" placeholder="example" id="password">
    </form>
    <script type="text/javascript">
      $(document).ready(function () {

        $('#login-form').on('submit', function (e) {

            $.ajax({
                url: "/someurl",
                type: "POST",
                data: {
                    username: $('#username').val(),
                    password: $('#password').val()
                }

            });

      });
    </script>

$(文档).ready(函数(){
$(“#登录表单”)。在('submit',函数(e)上{
$.ajax({
url:“/someurl”,
类型:“POST”,
数据:{
用户名:$('#用户名').val(),
密码:$('#password').val()
}
});
});
我还应该知道什么才能使任何表单(AJAX)安全?

  • 如果您确实想确保您的站点和对
    /someurl
    的调用是安全的,您应该阻止HTTP并通过HTTPS(无混合内容)加载所有内容。严格的传输安全HTTP头可以帮助您避免站点首先从HTTP重定向到HTTPS
  • CSRF只有在存储识别和验证用户的会话cookie时才需要令牌
  • 内容安全策略(CSP)头:您应该保护客户端脚本不受跨站点脚本(XSS)的影响。如果不这样做,您就不知道哪些脚本可以在客户端执行。请将您的javascript放在单独的文件中,并在CSP头中将此文件标记为受信任
  • 注入保护:您只需将用户输入传递给您的服务,因此根据您的服务器代码,您可能存在SQL注入漏洞。您可以通过多种方式保护您的站点,例如,转义所有用户提供的输入

您也应该使用SSL。@RoryMcCrossan SSL-Gotcha什么地方更适合存储CSRF令牌?CSRF令牌应该存储在会话中的服务器端,并作为隐藏输入加载到html页面中。会话cookie的另一种选择是存储在本地存储中的(JWT)令牌。但是,您可能会遇到其他安全问题(无有效期或清理)您必须仔细管理。