标签: html-sanitizing

Javascript清理:插入可能的XSS html字符串的最安全的方法

目前我正在使用这种方法与jQuery解决方案,以清除可能的XSS攻击字符串.

sanitize:function(str) {
    // return htmlentities(str,'ENT_QUOTES');
    return $('<div></div>').text(str).html().replace(/"/gi,'&quot;').replace(/'/gi,'&apos;');   
}
Run Code Online (Sandbox Code Playgroud)

但我觉得它不够安全.我错过了什么吗?

我在这里试过phpjs项目的htmlentities:http://phpjs.org/functions/htmlentities:425 /

但它有点被窃听并返回一些额外的特殊符号.也许这是旧版本?

例如:

htmlentities('test"','ENT_QUOTES');
Run Code Online (Sandbox Code Playgroud)

生产:

test&amp;quot;
Run Code Online (Sandbox Code Playgroud)

但应该是:

test&quot;
Run Code Online (Sandbox Code Playgroud)

你是如何通过javascript处理的?

javascript xss html-sanitizing

5
推荐指数
1
解决办法
2万
查看次数

Django,在将HTML放到模板时自动HTML"清理",如何阻止它?

我有点困惑,因为看起来Django模板有可选的HTML过滤器,但这似乎是自动发生..我正在制作这个演示应用程序,用户将执行一个调用python脚本检索URL的动作,然后我想在一个新窗口中显示它...它很好,除了当显示器返回时,HTML以这种格式清理(当我查看页面源时,我看到这一点,在浏览器中它显示为常规HTML:

&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;&lt;html lang=&quot;en&quot; xml:lang=&quot;en&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;head&gt;&lt;meta content=&quot;text/html; charset=utf-8&quot; http-equiv=&quot;content-type&quot; /&gt;&lt;script type=&quot;text/javascript&quot;&gt;//&lt;![CDATA[
si_ST=new Date
Run Code Online (Sandbox Code Playgroud)

这是相同的常规HTML版本:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ si_ST=new Date //]]></script><script type="text/javascript">//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en-
Run Code Online (Sandbox Code Playgroud)

我只是将它输出到我的html模板中的基本块,模板没有其他格式(没有HTML等),只有1个块,这个输出去..任何关于为什么会发生这种情况的建议以及如何显示常规非常感谢HTML(因此它会在浏览器中显示页面而不是HTML文本).谢谢

html python django templates html-sanitizing

4
推荐指数
2
解决办法
2505
查看次数

HtmlSanitizer + ASP.NET Core 2 带 DI

当我使用HtmlSanitizer而不使用 DI 时,效果很好。

不带 DI 的 HtmlSanitizer:

不带 DI 的 HtmlSanitizer

但是当我想HtmlSanitizer使用 DI 时。

  1. 我添加到 Startup.cs 文件:

    services.AddSingleton<IHtmlSanitizer, HtmlSanitizer>();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我使用存储库的构造函数来获取 的实例,IHtmlSanitizer但在注入的HtmlSanitizer实例中,AllowedTags、 和AllowAttributes为空。

带 DI 的 HtmlSanitizer:

带 DI 的 HtmlSanitizer

如何HtmlSanitizer使用 DI 获取填充属性?

c# dependency-injection html-sanitizing asp.net-core

4
推荐指数
1
解决办法
7879
查看次数

使用PHP函数自动将宽度和高度属性添加到<img>标记

我要的是我可以在用户输入,将智能查找和添加的运行功能widthheight属性,任何<img>在HTML中的BLOB标记,以避免页面-回流问题,同时图像加载.

我正在为PHP论坛编写发布脚本,其中用户的输入被清理并且通常在将其写入数据库之前变得更好以供稍后显示.作为我做的事情的一个例子,我有一个脚本将alt属性插入到图像中,如下所示:

Here are two images: <img src="http://example.com/image.png"> <img src="http://example.com/image2.png">

在通过发布脚本进行消毒后,它就变成了

Here are two images: <img src="http://example.com/image.png" alt="Posted image"> <img src="http://example.com/image2.png" alt="Posted image">

(这使得它在HTML 4下严格验证,但可能不符合alt属性的精神 - 唉!)

因此,对于我的函数,我有一个模糊的想法,即服务器需要getimagesize()在HTML块中找到的每个外部图像上运行,然后将函数生成的属性应用于<img>它运行的每个标记.我认为这个函数之前已经编写过,但我在Google或php.net文档上没有运气.我是否必须从头开始,或者是否有人意识到(相对)强大的功能,我可以使用或适应这项工作?

html php html-sanitizing getimagesize

3
推荐指数
1
解决办法
2233
查看次数

Rails 3提交Tag + html_safe

这行代码有什么问题?

<%= submit_tag "Delete <i class='icon-check'></i>".html_safe, :disable_with => "Deleting", :class => "btn btn-danger"%>
Run Code Online (Sandbox Code Playgroud)

这实际上产生:

在此输入图像描述

显然我的html_safe调用没有做任何事情.

背景:

我正在使用Twitter Bootstrap以及Font Awesome,我实际上是在尝试实现一个带有图标的提交按钮.

html-sanitizing html-safe ruby-on-rails-3 font-awesome

3
推荐指数
1
解决办法
4025
查看次数

node.js\sanitize html并删除标签

如何判断"sanitize-html"实际删除html标签(仅保留其中的内容)?目前,如果我将它设置为保留div部分,在输出中它也写入<div>some content</div>- 我只想要内部...('一些内容')

简而言之 - 我不想要标签,属性等 - 只有那些元素的内容..

var Crawler = require("js-crawler");
    var download = require("url-download");
    var sanitizeHtml = require('sanitize-html');
    var util = require('util');
    var fs = require('fs');

    new Crawler().configure({depth: 1})
      .crawl("http://www.cnn.com", function onSuccess(page) {

        var clean = sanitizeHtml(page.body,{
         allowedTags: [ 'p', 'em', 'strong','div' ],
        });
        console.log(clean);
        fs.writeFile('sanitized.txt', clean, function (err) {
            if (err) throw err;
            console.log('It\'s saved! in same location.');
        });

        console.log(util.inspect(clean, {showHidden: false, depth: null}));
        var str = JSON.stringify(clean.toString());
        console.log(str);
        /*download(page.url, './download')
        .on('close', function …
Run Code Online (Sandbox Code Playgroud)

html-sanitizing node.js

3
推荐指数
1
解决办法
7481
查看次数

Blazor 清理 MarkupString

我正在尝试清理 MarkupString 的内容。实际上我创建了这个(基于https://github.com/dotnet/aspnetcore/blob/574be0d22c1678ed5f6db990aec78b4db587b267/src/Components/Components/src/MarkupString.cs

public struct MarkupStringSanitized
{
    public MarkupStringSanitized(string value)
    {
        Value = value.Sanitize();
    }

    public string Value { get; }

    public static explicit operator MarkupStringSanitized(string value) => new MarkupStringSanitized(value);

    public override string ToString() => Value ?? string.Empty;
}
Run Code Online (Sandbox Code Playgroud)

但是渲染输出不是原始 html。我应该如何实现 MarkupStringSanitized 来使用

@((MarkupStringSanitized)"Sanitize this content")
Run Code Online (Sandbox Code Playgroud)

struct html-sanitizing asp.net-core blazor

3
推荐指数
1
解决办法
3350
查看次数

JSF的服务器端HTML清理程序/清理

是否有任何JSF实用工具包或PrimeFaces/OmniFaces等库中可用的HTML清理程序或清理方法?

我需要通过p:编辑器清理用户的HTML输入,并使用escape="true"stackexchange样式显示安全的HTML输出.在显示HTML之前,我正在考虑将已清理的输入数据存储到数据库中,以便它可以安全使用,escape="true"并且XSS不是危险的.

jsf html-sanitizing primefaces omnifaces

2
推荐指数
1
解决办法
1126
查看次数

Twig:允许HTML,但转义脚本

我正在调查XSS我的应用程序可能的攻击向量.

是)我有的:

  • FormType与单个textarea字段.通常,此字段可以包含html标记.
  • Twig 呈现数据的模板.

我使用该表单插入以下内容:

<b>Some valid HTML text</b>
<script type="text/javascript">alert("XSS")</script>
Run Code Online (Sandbox Code Playgroud)

查看该数据将需要转义.在转义数据时,我很熟悉一些策略.

1)raw过滤器:完全禁用转义 - >引入可能的XSS

2)e过滤器:

  • html 味道输出: <b>Some valid HTML text</b> <script type="text/javascript">alert("XSS")</script>
  • js 味道输出: \x3Cb\x3ESome\x20valid\x20HTML\x20text\x3C\x2Fb\x3E\x0D\x0A\x3Cscript\x20type\x3D\x22text\x2Fjavascript\x22\x3Ealert\x28\x22XSS\x22\x29\x3C\x2Fscript\x3E

3){{ var|striptags('<br>')|raw }},输出:一些有效的HTML文本警报("XSS")

这个有用,但我不喜欢它.我宁愿寻找黑名单解决方案,而不是白名单.

现在的问题是:

有没有任何其他转义策略允许html标签,但<script>e("js")过滤器一样转义标签?

我应该在表单提交期间还是在Twig呈现期间"杀死"脚本?

html-sanitizing symfony twig

2
推荐指数
1
解决办法
2246
查看次数

如何撤消绕过SecuritySecurityTrustHtml,即将SafeValue转换回字符串

我正在生成html,并使用将其插入到我的网页中

let data = '<font color=blue>hello world</font>';
this.safevalue = this.domSanitizer.bypassSecurityTrustHtml(data);
Run Code Online (Sandbox Code Playgroud)

在我的代码的其他地方,我想将安全值转换回字符串,所以我尝试了这个...

data = this.safevalue.toString();
Run Code Online (Sandbox Code Playgroud)

但这会将数据设置为这样的字符串...

'SafeValue must use [property]=binding: (see http://g.co/ng/security#xss)'
Run Code Online (Sandbox Code Playgroud)

这没有帮助

html-sanitizing angular

2
推荐指数
1
解决办法
1121
查看次数