Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.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
Javascript 关于html DOM事件的安全问题_Javascript_Jquery_Security - Fatal编程技术网

Javascript 关于html DOM事件的安全问题

Javascript 关于html DOM事件的安全问题,javascript,jquery,security,Javascript,Jquery,Security,首先,这可能是一个新手的愚蠢问题 我正在用Laravel开发一个web应用程序,但最终使用了大量的Jquery/javascript。我试图在开发过程中考虑所有可能的安全风险,但我对这个主题研究得越多,就越担心Jquery/javascript的使用。似乎使用Jquery/javascript动态加载内容总体上是一个非常糟糕的主意……但我不想重做所有事情,因为这将需要花费数周的时间来额外开发已经开发的内容。一个简单的例子 假设我有一个方法连接到我的div,就像这样 <div class="

首先,这可能是一个新手的愚蠢问题

我正在用Laravel开发一个web应用程序,但最终使用了大量的Jquery/javascript。我试图在开发过程中考虑所有可能的安全风险,但我对这个主题研究得越多,就越担心Jquery/javascript的使用。似乎使用Jquery/javascript动态加载内容总体上是一个非常糟糕的主意……但我不想重做所有事情,因为这将需要花费数周的时间来额外开发已经开发的内容。一个简单的例子 假设我有一个方法连接到我的div,就像这样

<div class="img-container" id="{{$file->id}}" onmouseover="showImageButtons({{$file->id}})"></div>
当我在浏览器中打开它时,我能够通过chrome inspector更改发送到javascript的参数值

当它被执行时,我可以看到“一些恶意代码”被打印到控制台上。 如果我使用该参数对服务器进行ajax调用会怎么样?会过去吗?
有什么东西我不懂还是很容易操纵?

< P>有两个基本方面需要考虑的Web安全性-< /P>
  • 浏览器和服务器之间的连接应该是安全的(即https),这样,假设您正确配置了服务器,没有人可以拦截客户机-服务器通信,您可以通过AJAX共享数据

  • 在服务器端,您应该将来自客户端的信息视为恶意信息并对其进行清理;这是因为任何人都可以通过您的网页向您发送任何内容,即使您在客户端执行输入验证,因为您的javascript代码是由客户端执行的,因此完全可以控制攻击者。虽然仅在网页中植入“恶意代码”并不是真正的攻击,但如果攻击者让您将该恶意代码存储在服务器中并发送给其他客户端,则她可以在您的其他客户端浏览器上运行javascript,这是不好的(查找“跨站点脚本/XSS”)


  • 安全性不是在客户端完成的,而是在服务器端完成的。假设您从客户端获得的每一条数据都是恶意的。相应地编码。是;您永远不能信任来自客户端的任何内容(无论使用AJAX)。您可以对
    $file->id
    进行编码,以便其中的任何恶意内容都不会执行()。这不会阻止用户操作DOM,但我认为您真正关心的是PHP变量的值。如果用户在自己的浏览器上输入了一些恶意代码,这对其他任何人来说都无关紧要。我想到的另一个问题是,服务器的响应是否可以被中断和操纵。例如,我调用ajaxget方法,在控制器中,我返回一个视图,然后使用$('#someComponent').html(response)将此响应放置为html。在服务器响应中间和客户端实际接收到响应变量时,该响应变量可以改变吗?
    function showImageButtons(id)
    {
      console.log(id);
    }