小编blu*_*ume的帖子

以下javascript是否可以安全地执行任意代码?

我正在贡献一个javascript框架,它具有以下代码的等价物:

eval("'" + user_input.replace(/'/g, "'") + "'");
Run Code Online (Sandbox Code Playgroud)

我知道这太可怕了 - 不需要说服我.我想知道的是,我可以在这里注入任意代码吗?

乍一看user_input.replace("'", "'")似乎会阻止我突破弦乐.但是我可以传递新行,例如\nalert(123)\n,但结果总是语法错误,例如

'
alert(123)
'
Run Code Online (Sandbox Code Playgroud)

这里是否实际存在代码注入的向量,而不仅仅是导致语法错误?

javascript security xss node.js

9
推荐指数
1
解决办法
1007
查看次数

Ember.js - 渲染到插座的默认模板?

所以我有一个如下所示的页面

[ Nav Bar ]

|         |
| Content |
|         |
Run Code Online (Sandbox Code Playgroud)

导航栏我希望在所有页面中保持不变.所以我使用的方法是将我的页面设置如下:

[ Nav Bar ]

{{outlet}}
Run Code Online (Sandbox Code Playgroud)

这很棒,我现在可以将不同的页面呈现在不同路线的插座中.

但是如果我想将默认模板渲染到我的主页的插座中呢?

我已经成功通过重定向来实现这一//home,但必须有一个更好的方式来做到这一点,让我在渲染默认主页/,而不重新路由?

任何建议赞赏,

谢谢,丹尼尔

ember.js

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

使用 imagemagick 分割图像

我有一个大图像,由透明背景上的许多较小图像(不接触)组成。就像精灵表一样,但精灵的大小并不相同,也不是排列在网格上。

我可以使用 ImageMagick 将图像分割成更小的图像吗?

因此,例如:(其中#= 彩色像素)

  #   ##
  #   # 
    # # 
  ###   
Run Code Online (Sandbox Code Playgroud)

变成这些

#
#

##
#
#

  #
###
Run Code Online (Sandbox Code Playgroud)

image-manipulation image imagemagick image-processing

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

让IE停止在iframe中将ajax视为跨域

我有以下设置:

www.domain1.com/page1/ - 发出ajax POST请求 www.domain1.com/page2/

www.domain1.com/page2/ - 返回json响应


www.domain2.com/page1/- 嵌入www.domain1.com/page1/iframe


当我加载www.domain1.com/page1/ajax请求时,一切正常.当我加载www.domain2.com/page1/Chrome或Firefox时,www.domain1.com/page1/会显示在iframe中,并且ajax请求正常.

当我尝试加载www.domain2.com/page1/在IE7/IE8,Ajax请求给出一个Forbidden错误-这似乎是处理请求跨域和阻止它,即使该请求被从制作www.domain1.com/page1/www.domain1.com/page2/.

当请求是GET时,它在IE中工作正常,但不是POST.我怎样才能让IE停止将其视为跨域,只是因为整个流程都包含在iframe中?

谢谢!

javascript ajax jquery internet-explorer cross-domain

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

在框架窗口的上下文中运行代码

我想在iframe窗口的上下文中运行一些javascript.现在,我能想到的唯一方法是注入脚本标记:

myIframe = document.createElement('iframe');
myIframe.setAttribute('name', 'xyz123');
document.body.appendChild(myIframe);

myIframe.contentWindow.document.write(`
    <script>
        console.log('The current window name is:', window.name);
    </script>
`);
Run Code Online (Sandbox Code Playgroud)

注意:这是一个同域iframe,没有src,所以我可以完全访问contentWindow.

对于我的用例来说,重要的是代码运行正确的全局变量; window,document等等都应该先限定的iframe本身.

有没有其他方法可以做到这一点?上面的工作,但脚本需要在不同的域上运行所有具有不同的CSP规则,这意味着添加对nonce /哈希等的支持.

有可能做这样的事情:

myIframe.contentWindow.run(function() {
    console.log('The current window name is:' window.name);
});
Run Code Online (Sandbox Code Playgroud)

我试过myIframe.contentWindow.setTimeout但似乎仍然在父窗口的上下文中运行代码.

html javascript browser

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

Django:如何在list_display中包含内联模型字段?

我正在尝试扩展django的contrib.auth用户模型,使用内联"Profile"模型来包含额外的字段.

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin

class Profile(models.Model):

  user = models.ForeignKey(User, unique=True, related_name='profile')
  avatar = '/images/avatar.png'
  nickname = 'Renz'

class UserProfileInline(admin.StackedInline):

  model = Profile

class UserProfileAdmin(UserAdmin):

  inlines = (UserProfileInline,)

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
Run Code Online (Sandbox Code Playgroud)

这适用于管理员"更改用户"页面,但我找不到在list_display中添加内联模型字段的方法.只需在list_display中指定配置文件字段的名称就会出错:

UserProfileAdmin.list_display [4],'avatar'不是'UserProfileAdmin'的可调用或属性,或者在模型'User'中找到.

我可以创建一个callable,它在Profile表中查找用户并返回相关字段,但这使我无法通过内联字段对列表视图进行排序,我真的需要这样做.

有什么建议?

python django django-models django-admin

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

查找只有   的段落 并删除 p 标签

我试图找到所有带有内联样式 attrs style="text-align:center;" 的 p 标签 包含公正&nbsp;而没有别的。然后删除每个找到的整个 p 。

还有其他 p 标签具有相同的属性,其中包含的不仅仅是我想要保留的 nbsp ,我只是坚持寻找只有空格的标签。愚蠢的 wordpress tinyMCE 编辑器,把我逼疯了。

这是我工作的基础。只输出所有文本对齐中心 p 标签。

var p = $('.entry p[style="text-align: center;"]');
p.each(function() { 
  console.log(p);
});
Run Code Online (Sandbox Code Playgroud)

愚蠢的小东西,我不想再花时间去弄清楚我做错了什么。这是一个示例页面,其中包含我正在使用的内容。 http://www.drinkinginamerica.com/page/14/

谢谢

javascript regex

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

创建一个接受回调的api,并返回一个promise

所以我正在尝试升级现有的api以支持promises,但我想保持向后兼容性.所以,让我们说这是我的api:

module.exports = {

    deliverPost: function(callback) {

        someAsyncFunction(function(err) {

            if (err)
                console.log(err);

            callback(err);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

那很好,我可以调用它并通过回调,一切正常.

现在我们用承诺做同样的事情:

var q = require('q');

module.exports = {

    deliverPost: function() {

        return q.nfcall(someAsyncFunction).catch(function(err) {

            console.log(err);
            throw err;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,现在它返回了一个承诺,但我的问题是,这个api的任何老客户都期望能够传递一个回调!

所以我真正需要的是这样的:

var q = require('q');

module.exports = {

    deliverPost: function(callback) {

        return q.nfcall(someAsyncFunction).catch(function(err) {

            console.log(err);
            throw err;

        }).attachNodeStyleCallback(callback);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以新的调用者可以利用promise支持,但是如果传入回调,一切仍然有效.

这是一种模式,例如jQuery.ajax- 我怎么能这样做Q.js

这是一个attachNodeStyleCallback供参考的实现:

q.makePromise.prototype.attachNodeStyleCallback = function(callback) {

    if (!callback)
        return this;

    return this.then(function(result) {

        callback(null, …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise q

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