小编Pan*_*rat的帖子

什么是跨站点脚本包含(XSSI)?

我最近在多个页面上看过XSSI,例如Web Application Exploits and Defenses:

浏览器会阻止一个域的页面读取其他域中的页面.但是它们不会阻止域的页面引用其他域中的资源.特别是,它们允许从其他域渲染图像,并从其他域执行脚本.包含的脚本没有自己的安全上下文.它在包含它的页面的安全上下文中运行.例如,如果www.evil.example.com包含托管在www.google.com上的脚本,则该脚本将在恶意上下文中运行,而不是在Google上下文中运行.因此该脚本中的任何用户数据都将"泄漏".

我没有看到这在实践中产生了什么样的安全问题.我理解XSS和XSRF,但XSSI对我来说有点神秘.

任何人都可以根据XSSI绘制漏洞吗?

谢谢

security xss

31
推荐指数
3
解决办法
2万
查看次数

在Django数据迁移中手动提交

我想写一个数据迁移,我在这里以较小的批量修改一个大表中的所有行,以避免锁定问题.但是,我无法弄清楚如何在Django迁移中手动提交.每次我试着跑,commit我得到:

TransactionManagementError:当'atomic'块处于活动状态时禁止使用.

AFAICT,数据库模式编辑器总是原子块中包装Postgres迁移.

是否有一种明智的方法可以在迁移过程中突破交易?

我的迁移看起来像这样:

def modify_data(apps, schema_editor):
    counter = 0
    BigData = apps.get_model("app", "BigData")
    for row in BigData.objects.iterator():
        # Modify row [...]
        row.save()
        # Commit every 1000 rows
        counter += 1
        if counter % 1000 == 0:
            transaction.commit()
    transaction.commit()

class Migration(migrations.Migration):
    operations = [
        migrations.RunPython(modify_data),
    ]
Run Code Online (Sandbox Code Playgroud)

我正在使用Django 1.7和Postgres 9.3.这曾经用于南方和旧版本的Django.

django postgresql database-migration

15
推荐指数
2
解决办法
3922
查看次数

使用Postgres插入数据并设置外键

在架构更改后,我必须在Postgres DB中迁移大量现有数据.

在旧模式中,country属性将存储在users表中.现在,country属性已移至单独的地址表中:

users:
  country # OLD
  address_id # NEW [1:1 relation]

addresses:
  id
  country
Run Code Online (Sandbox Code Playgroud)

模式实际上更复杂,地址不仅包含国家/地区.因此,每个用户都需要拥有自己的地址(1:1关系).

迁移数据时,我在插入地址后在users表中设置外键时遇到问题:

INSERT INTO addresses (country) 
    SELECT country FROM users WHERE address_id IS NULL 
    RETURNING id;
Run Code Online (Sandbox Code Playgroud)

如何传播插入行的ID并在users表中设置外键引用?

到目前为止,我能想出的唯一解决方案是在地址表中创建一个临时的user_id列,然后更新address_id:

UPDATE users SET address_id = a.id FROM addresses AS a 
    WHERE users.id = a.user_id;
Run Code Online (Sandbox Code Playgroud)

然而,事实证明这非常慢(尽管在users.id和addresses.user_id上都使用了索引).

users表包含大约300万行,其中300k缺少相关地址.

有没有其他方法可以将派生数据插入到一个表中,并在另一个表中设置插入数据的外键引用(不更改架构本身)?

我正在使用Postgres 8.3.14.

谢谢

我现在通过使用Python/sqlalchemy脚本迁移数据来解决问题.事实证明(对我来说)比用SQL尝试更容易.不过,如果有人知道在Postgres SQL中处理INSERT语句的RETURNING结果的方法,我会感兴趣.

sql postgresql data-migration

12
推荐指数
1
解决办法
8619
查看次数