我正在贡献一个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)
这里是否实际存在代码注入的向量,而不仅仅是导致语法错误?
所以我有一个如下所示的页面
[ Nav Bar ]
| |
| Content |
| |
Run Code Online (Sandbox Code Playgroud)
导航栏我希望在所有页面中保持不变.所以我使用的方法是将我的页面设置如下:
[ Nav Bar ]
{{outlet}}
Run Code Online (Sandbox Code Playgroud)
这很棒,我现在可以将不同的页面呈现在不同路线的插座中.
但是如果我想将默认模板渲染到我的主页的插座中呢?
我已经成功通过重定向来实现这一/来/home,但必须有一个更好的方式来做到这一点,让我在渲染默认主页/,而不重新路由?
任何建议赞赏,
谢谢,丹尼尔
我有一个大图像,由透明背景上的许多较小图像(不接触)组成。就像精灵表一样,但精灵的大小并不相同,也不是排列在网格上。
我可以使用 ImageMagick 将图像分割成更小的图像吗?
因此,例如:(其中#= 彩色像素)
# ##
# #
# #
###
Run Code Online (Sandbox Code Playgroud)
变成这些
#
#
##
#
#
#
###
Run Code Online (Sandbox Code Playgroud) 我有以下设置:
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中?
谢谢!
我想在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但似乎仍然在父窗口的上下文中运行代码.
我正在尝试扩展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表中查找用户并返回相关字段,但这使我无法通过内联字段对列表视图进行排序,我真的需要这样做.
有什么建议?
我试图找到所有带有内联样式 attrs style="text-align:center;" 的 p 标签 包含公正 而没有别的。然后删除每个找到的整个 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/
谢谢
所以我正在尝试升级现有的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 ×5
node.js ×2
ajax ×1
browser ×1
cross-domain ×1
django ×1
django-admin ×1
ember.js ×1
html ×1
image ×1
imagemagick ×1
jquery ×1
promise ×1
python ×1
q ×1
regex ×1
security ×1
xss ×1