相关疑难解决方法(0)

将HTML插入视图

是否可以在AngularJS控制器中创建HTML片段并在视图中显示此HTML?

这需要将不一致的JSON blob转换为嵌套的id : value对列表.因此,HTML是在控制器中创建的,我现在希望显示它.

我创建了一个模型属性,但是如果不打印HTML,则无法在视图中呈现它.


更新

似乎问题来自角度渲染创建的HTML作为引号内的字符串.将试图找到解决这个问题的方法.

示例控制器:

var SomeController = function () {

    this.customHtml = '<ul><li>render me please</li></ul>';
}
Run Code Online (Sandbox Code Playgroud)

示例视图:

<div ng:bind="customHtml"></div>
Run Code Online (Sandbox Code Playgroud)

给:

<div>
    "<ul><li>render me please</li></ul>"
</div>
Run Code Online (Sandbox Code Playgroud)

javascript escaping html-sanitizing angularjs

788
推荐指数
9
解决办法
64万
查看次数

删除ng-bind-html-unsafe后,如何注入HTML?

我正在尝试使用$sanitizeprovider和ng-bind-htm-unsafe指令允许我的控制器将HTML注入DIV.

但是,我无法让它发挥作用.

<div ng-bind-html-unsafe="{{preview_data.preview.embed.html}}"></div>
Run Code Online (Sandbox Code Playgroud)

我发现它是因为它从AngularJS中删除了(谢谢).

但没有ng-bind-html-unsafe,我得到这个错误:

http://errors.angularjs.org/undefined/$sce/unsafe

html angularjs

265
推荐指数
7
解决办法
24万
查看次数

如何使用AngularJS模板渲染html

这是我的模板:

<div class="span12">
  <ng:view></ng:view>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的视图模板:

<h1>{{stuff.title}}</h1>

{{stuff.content}}
Run Code Online (Sandbox Code Playgroud)

我得到了contenthtml,我想在视图中显示,但我得到的只是原始的HTML代码.我该如何呈现该HTML?

javascript angularjs

67
推荐指数
2
解决办法
12万
查看次数

AngularJS:使用自定义样式绑定html字符串

我想将带有自定义样式的html字符串绑定到DOM.但是ngSanitize从字符串中删除样式.

例如:

在控制器中:

$scope.htmlString = "<span style='color: #89a000'>123</span>!";
Run Code Online (Sandbox Code Playgroud)

在DOM中:

<div data-ng-bind-html="htmlString"></div>
Run Code Online (Sandbox Code Playgroud)

将省略style属性.结果如下:

<div data-ng-bind-html="htmlString"><span>123</span>!</div>
Run Code Online (Sandbox Code Playgroud)

代替:

<div data-ng-bind-html="htmlString"><span style='color: #89a000'>123</span>!</div>
Run Code Online (Sandbox Code Playgroud)

问题:我怎样才能做到这一点?

angularjs

47
推荐指数
3
解决办法
4万
查看次数

如何显示&nbsp; 或者角度数据中的任何原始html?

如何显示&nbsp;空格而不是字符串.raw在树枝上有过滤器吗?

<div>{{item}}</div>

$scope.item = '&nbsp;';
Run Code Online (Sandbox Code Playgroud)

但结果是逃脱的&amp;nbsp;.我需要这个因为' '高度为0.

javascript angularjs

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

Angular 1.2:ng-bind-html删除img上的src属性

我在客户端使用Angular(1.2 RC2)开发CMS驱动的网站.由于内容来自CMS,我很遗憾不得不在JSON字符串中使用接收HTML.大多数HTML都被注入并渲染得很好,但是图像标签的src被剥离了.根据我的阅读,src应该以"unsafe:"为前缀,如果这是Angular中的XSS安全问题,则不会完全删除..但我可能会弄错.

我已经在这个问题上待了一段时间,感觉我已经尝试了从合理到彻头彻尾的愚蠢的一切.将我的CMS网址列入白名单,将所有内容列入白名单,禁用$ sce,强制html通过$ sce.trustAsHtml()并且好......到目前为止,没有运气.由于该网站是由CMS驱动的,我不幸的是不能创造一个掠夺/小提琴,但我希望善良的灵魂无论如何都会尝试帮助.

更新:忘记提及我也尝试过ng-src,效果相同. 更新II:如果我使用HTTPS,src属性仍然存在并显示图像.这是可以接受的,因为它将在生产中运行HTTPS,但我仍然想知道为什么禁用$ sce不起作用.

浏览器看到的HTML(slide.body的内容)

<div class="row">
    <div class="col-md-6 visible-md visible-lg">
        <img alt="none" class="img-responsive">
    </div>
    <div class="col-xs-12 col-md-6">
        <div class="itx-article-header">
             <h1>Sulvat Quis 1</h1>

             <h2>– Nullam dictum ac enim</h2>

        </div>
        <p>Proin quis justo vel felis varius sodales sit amet ut diam.</p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

JADE(HTML)

.my-carousel(ng-controller='CarouselCtrl')
    carousel(interval='myInterval')
        slide(ng-repeat='slide in slides', active='slide.active')
            .my-carousel-item(ng-bind-html='slide.body')
Run Code Online (Sandbox Code Playgroud)

角度控制器

.controller('CarouselCtrl', ['$sce', 'Article', '$scope',
    function($sce, Article, $scope) {
        $scope.myInterval = -1;
        $scope.slides = Article.query(
            {category: 'carousel'}, …
Run Code Online (Sandbox Code Playgroud)

xss tinymce angularjs

7
推荐指数
1
解决办法
7107
查看次数

Angular $ sce vs外部语言环境文件中的HTML

关于ng-bind-html将Angular应用程序从1.0.8升级到1.2.8的问题:

我将语言环境字符串存储在名为en_GB.json,fr_FR.json等的文件中.到目前为止,我已允许在语言环境字符串中使用HTML,以允许团队编写本地化内容以应用基本样式或添加内联锚标记.这将导致以下示例JSON:

{
  "changesLater":     "<strong>Don't forget</strong> that you can always make changes later." 
  "errorEmailExists": "That email address already exists, please <a href=\"login\">sign in</a> to continue."
}
Run Code Online (Sandbox Code Playgroud)

当使用这些字符串时ng-bind-html="myStr",我明白我现在需要使用$sce.trustAsHtml(myStr).我甚至可以按照这个StackOverflow应答中的建议编写一个过滤器,这将导致使用ng-bind-html="myStr | unsafe".

问题:

  1. 通过做这样的事情,我的应用程序现在是不安全的吗?如果是这样,攻击者如何利用这个?
  2. 如果显示的HTML字符串的来源是用户(即将向其他用户显示的博客文章后评论),我可以理解潜在的漏洞利用,但如果我只显示来自其他用户的HTML,我的应用程序真的会面临风险JSON文件托管在同一个域上?
  3. 我还有什么其他方法可以在角度应用程序中实现外部加载内容字符串的标记吗?

javascript xss angularjs

7
推荐指数
1
解决办法
1044
查看次数

ng-bind-html不加载图像src

我有这样一个简单的演示文稿

<div id="{{item.id}}" ng-repeat="item in itemList">
        <div ng-bind-html="item.html"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

item.html包含这样的html:

<a href="http://www.youtube.com"><img src="icons/youtube.png" alt="Youtube"/></a> 
Run Code Online (Sandbox Code Playgroud)

但是,生成的html不会加载图像:

<a href="http://www.youtube.com"><img alt="Youtube"/></a>
Run Code Online (Sandbox Code Playgroud)

经过一些搜索,看起来像angularjs这样做是为了避免跨站点脚本,但我能够直接从youtube加载图像.

<a href="http://www.youtube.com"><img src="http://img.youtube.com/vi/9bZkp7q19f0/0.jpg" alt="Youtube"/></a>
Run Code Online (Sandbox Code Playgroud)

此外,我能够使用ng-bind-html-unsafe加载所有图像.

    <div id="{{item.id}}" ng-repeat="item in itemList">
        <div ng-bind-html-unsafe="item.html"></div>
    </div>
Run Code Online (Sandbox Code Playgroud)

如果我使用ng-bind-html-unsafe,我不再需要ngSanitize模块,这意味着我的代码不太安全?我确实有用例从外部源加载图像.

来到我的问题:

  1. 除了上面提到的内容之外,ng-bind-html和ng-bind-html-unsafe有什么区别.有没有关于此的文件?我找不到任何东西.

  2. 如何从主机服务器和外部服务器加载图像,而不必使用unsafe指令?

谢谢!

angularjs

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

保留AngularJS中的换行符

我正在开发一个使用AngularJS的应用程序.我的控制器看起来像这样:

function TestCtrl($scope) {
  $scope.lines = 'var x=1;\nvar y=2;';
}
Run Code Online (Sandbox Code Playgroud)

我的观点如下:

<div ng-controller="TestCtrl">
  <p>
    Output:<br />
    <code>{{lines}}</code>
  </p>
</div>
Run Code Online (Sandbox Code Playgroud)

呈现视图时,值$scope.lines将在单行上呈现,如下所示:

var x=1; var y=2;
Run Code Online (Sandbox Code Playgroud)

但是,我想将其显示为:

var x=1;
var y=2;
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我试着开关\n<br />,但是,也不能工作.

javascript angularjs

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

标签 统计

angularjs ×9

javascript ×5

xss ×2

escaping ×1

html ×1

html-sanitizing ×1

tinymce ×1