小编Pan*_*cho的帖子

Oracle SQL - 我可以返回列值的"之前"状态

假设myTable中的以下行:

id     =  1
letter = 'a'
Run Code Online (Sandbox Code Playgroud)

在Oracle中,可以轻松地执行以下操作:

update myTable set
  letter = 'b'
where id   = 1
returning letter 
into myVariable;
Run Code Online (Sandbox Code Playgroud)

然后myVariable将保持值'b'.

我正在寻找的是一些返回字母"之前"值的方法

即.将以前的更新替换为:

update myTable set
  letter = 'b'
where id   = 1
returning letter "before the update"
into myVariable;
Run Code Online (Sandbox Code Playgroud)

然后myVariable应该保持值'a';

我知道T-SQL可以通过OUTPUT子句实现这一点.

有没有Oracle等效的方法来实现这一点,所以我不必先做一个"选择"只是为了得到之前的值?

sql oracle

11
推荐指数
1
解决办法
1115
查看次数

Oracle SQL:使用具有用户定义类型的LAG函数返回"不一致的数据类型"

我有一个MyType类型定义如下:

create or replace type MyType as varray(20000) of number(18);
Run Code Online (Sandbox Code Playgroud)

表MyTable定义如下:

create table MyTable (
   id       number(18) primary key
  ,widgets  MyType
)
Run Code Online (Sandbox Code Playgroud)

我试图使用以下SQL为MyTable中的每一行及其逻辑上前一行选择小部件:

select  t.id
       ,lag(t.widgets,1) over (order by t.id) as widgets_previous
from MyTable t
order by t.id;
Run Code Online (Sandbox Code Playgroud)

我收到了回复:

ORA-00932: inconsistent datatypes: expected - got MYSCHEMA.MYTYPE
Run Code Online (Sandbox Code Playgroud)

如果我使用varchar或number类型的列而不是MyType运行完全相同的查询,它可以正常工作.

当前行中的列类型及其上一行必须相同,因此我只能假设它与用户定义的类型相关.

我是否需要做一些特殊的事情来使用具有用户定义类型的LAG,或者LAG是否不支持用户定义的类型?如果是后者,是否有任何其他实用功能可以提供相同的功能,或者我需要做一个传统的自我联接以实现相同的功能?

sql oracle function user-defined-types

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

Red Hat linux - "关闭"加密检查

我有一个Red Hat 6.5 Linux实现,它使用LUKS加密系统,并且 - 由于不相关的原因 - 我想在一段时间内"关闭"启动加密检查.它会在某个时候再次打开,所以即使可以完全删除LUKS加密,这也不是我感兴趣的解决方案.

我想要的是在启动时自动提供LUKS密码,这样就不需要手动输入 - 因此即使仍然实际启用,逻辑上也会"关闭"加密.

现在,虽然这对于辅助设备来说很简单,即.通过创建密钥文件,将密钥文件应用于加密设备并修改/ etc/crypttab以引用密钥文件,仍然必须在引导时输入至少一个密码 - 因为,如果主设备是LUKS加密的,那么它首先必须在/ etc/crypttab可访问之前解密.

有一种方法我已经看到删除输入初始密码的要求,即:

  1. 创建一个密钥文件
  2. 将密钥文件应用于加密设备,即.启用设备密钥解密
  3. 将密钥文件复制到可移动的未加密设备(例如闪存驱动器)
  4. 将rd.luks.key = 密钥文件的绝对路径追加: /boot/grub/grub.conf中的可移动未加密设备到引导内核行
  5. 在引导时,请确保已插入可移动未加密设备,并且可由引导过程引用.

除了我不想要一个可移动的未加密设备外,这一切看起来都不错.我只是希望服务器启动,好像它没有加密.

我能看到实现这一目标的唯一方法是用普通的未加密设备替换可移动的未加密设备.在这种情况下,引导过程将读取正常的未加密设备,获取密钥并使用它来解密加密设备...嘿presto加密被禁用.

我能在我的系统上找到的唯一符合正常未加密设备标准的设备是/ dev/sda1 ie./ boot,所以我按照以下步骤3和步骤4执行了上述步骤:

  1. 如上
  2. 如上
  3. 将密钥文件复制到/boot/keyfile.key
  4. 追加rd.luks.key =/boot/keyfile.key:/ dev/sda1
  5. N/A

不幸的是,我似乎无法让这个工作.

Red Hat启动并且我没有被要求输入密码(正如预期的那样),但是在启动过程结束时,它失败了"内核恐慌 - 没有同步:尝试杀死init!..."

无论以下哪种使用方式,此行为都是相同的:

  • rd.luks.key = /引导/ keyfile.key是:/ dev/SDA1
  • rd.luks.key =/keyfile.key是:/ dev/SDA1
  • rd.luks.key =/keyfile.key
  • rd.luks.key =/someKeyFileThatIknowDoesNotExist.key:/ …

linux encryption redhat

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

html 密码字段 - 禁用密码管理器

我需要允许用户更改他们的密码,因此我在表单上有 2 个字段:

  1. 输入您的新密码
  2. 重新输入您的新密码(字段 1 和 2 的值必须匹配)

为了使用户的操作保密,使用的明显选择是 input type="password" 字段 - 这就是我想要做的。

然而,浏览器密码管理器不断提供自动填充字段,在这种情况下,这种活动根本没有意义。

事实上,在我看来,这种做法是不安全的,因为它通过接受密码管理器提供的密码并进行细微调整,增加了人们选择与他们当前拥有的密码“相似”的密码的可能性。(只是一个简短的说明,无需提及可以采取确保差异的保护措施,因为我知道这一点 - 谢谢)

我已经做了很多研究来尝试禁用密码管理器,包括:

  • autocomplete="off/new-password/rubbish value"(对于 form 和 type="password" 字段,分别并同时使用)
  • 使用 javascript 将字段从 type="text" 更改为 type="password" 焦点
  • 在表单上的密码字段之前插入隐藏的密码字段
  • 从字段中删除名称和 ID

但是,虽然有些方法部分起作用,但没有任何方法能始终如一地起作用。

我唯一能找到的似乎成功的方法是使用 type="text" 并使用虚拟的“密码”字体显示圆圈

然而,这种方法感觉就像我在与浏览器作斗争,我不能相信没有密码管理器参与的简单方法可以输入“隐藏”文本。

补充说明:

因此这个问题。是否有任何密码大师知道如何在输入隐藏文本时禁用密码管理器?谢谢!

html passwords autocomplete

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

grub2-mkpasswd-pbkdf2 - 它可以接受标准输入吗?

在 CentOS 6 上,我们目前使用该选项加密 grub 密码password --md5,并且可以将其编写到我们的标准服务器构建中。

我们正忙于迁移到 CentOS 7,看来该password --md5选项已在 grub2 中删除并替换为grub2-mkpasswd-pbkdf2.

尽管我欢迎安全性的提高,但我找不到grub2-mkpasswd-pbkdf2通过标准输入将密码传递给命令的方法,而且 grub2 似乎已经删除了对 md5 的支持,这两者的结合破坏了我们的脚本构建自动化。

任何人都可以帮忙:

  1. 一种通过标准输入传递密码的方法grub2-mkpasswd-pbkdf2?或者
  2. 接受标准输入的替代 pbkdf2 生成实用程序grub2-mkpasswd-pbkdf2?或者
  3. 与 grub2 一起使用的机制--md5

security redhat grub centos grub2

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

位置: header 似乎没有设置 HTTP_REFERER

在阅读我的问题之前,请注意:我知道 HTTP_REFERER 可以在客户端浏览器中被欺骗或禁用。我不关心我的用例,而且我正在测试的浏览器肯定会传递引用信息。

我的问题是这样的:

我创建一个名为 page1.php 的文件:

<?php
header("Location: page2.php");
Run Code Online (Sandbox Code Playgroud)

我创建第二个文件,名为 page2.php:

<?php
echo "Referred by \"" . $_SERVER['HTTP_REFERER'] . "\"";
Run Code Online (Sandbox Code Playgroud)

然后从我的客户端浏览器调用:

http://test-me.co/page1.php

我期望 page2.php 的结果输出为:

由“ http://test-me.co/page1.php ”引用

但它显示没有引用信息,如下所示:

由......推荐 ””

谁能告诉我为什么引用者为空?

非常感谢!

php http-referer header http

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