Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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文件进行XSS攻击_Javascript_Html_Security_Xss - Fatal编程技术网

防止对用户上传的Javascript和HTML文件进行XSS攻击

防止对用户上传的Javascript和HTML文件进行XSS攻击,javascript,html,security,xss,Javascript,Html,Security,Xss,在我们的网站上,我们希望允许用户上传/编辑HTML,尤其是Javascript文件 我们理解此操作可能存在安全隐患,并希望采取一些措施确保未插入危险代码 我们希望有一个正则表达式列表,以从用户输入文件/脚本中过滤出不需要的表达式 例如: 筛选到资源/脚本的传出链接(链接rel、脚本src等) 从脚本中筛选window.parent对象 筛选出在window.parent上执行代码的HTML属性 阻止访问cookie/其他敏感用户数据 防止将数据发布到远程服务器(XMLHttpRequest/aj

在我们的网站上,我们希望允许用户上传/编辑HTML,尤其是Javascript文件

我们理解此操作可能存在安全隐患,并希望采取一些措施确保未插入危险代码

我们希望有一个正则表达式列表,以从用户输入文件/脚本中过滤出不需要的表达式

例如:

  • 筛选到资源/脚本的传出链接(链接rel、脚本src等)
  • 从脚本中筛选window.parent对象
  • 筛选出在window.parent上执行代码的HTML属性
  • 阻止访问cookie/其他敏感用户数据
  • 防止将数据发布到远程服务器(XMLHttpRequest/ajax/etc…)
  • 还有什么
  • 请注意,所有用户内容脚本都将在iframe中执行。因此,一个能够解决所有
    窗口。父类
    案例的答案可能会很有用


    这是完全错误的做法吗?

    如果存在这种类型的答案问题,则使用正则表达式进行过滤是错误的。使用。A.解析器。允许您清理传入HTML的HTML解析器。JS解析器允许您清理传入的JS。试图用正则表达式来实现这一点是浪费时间的,它永远不会起作用,原因很简单,正则表达式在技术上无法解析更高级的语言。从一开始就把你的时间投入到合适的工具上。另外,不要在客户端进行验证。服务器进行输入验证。您在客户端所做的任何事情都是多余的,您可以为方便而添加这些内容。@Tomalak您知道一个好的语法分析器吗?有几个选项可用于解析HTML,其中一个是流行的,另一个是我发现的。对于JS,也存在一些项目,您可以使用的解析器部分,我还发现了一些其他项目。你自己四处看看。JS和HTML的过程相同。让解析器分析源代码,检查从解析器中得到的树,列出要保留的内容,扔掉所有其他内容(或者完全拒绝输入)。