小编Mar*_*ham的帖子

当内容安全策略到位时,如何显示视频内容?

我希望这个问题有一个简单的答案。

我正在使用“fancybox”工具将 Vimeo 的视频嵌入到页面上。Fancybox 实质上创建了一个 iFrame 并嵌入了 Vimeo 播放器。它在所有浏览器中都运行良好 - 直到我打开内容安全策略。然后 ID 就可以工作(因为它没有实现 CSP),但 Chrome 和 Firefox 只是挂起并显示“正在加载”图像。

我已经尝试过这个 CSP:

<add header="Content-Security-Policy" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />
<add header="X-Content-Security-Policy" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />
<add header="X-WebKit-CSP" value="default-src 'self'; media-src 'self' http://player.vimeo.com; frame-src 'self' http://player.vimeo.com; " />
Run Code Online (Sandbox Code Playgroud)

当然,我的想法是允许媒体和 iframe 来自 vimeo。但这不起作用。有谁知道为什么?

更新:我删除了仅显示视频的页面的 CSP,并使用 Google 的开发人员工具查看了内容。我发现 Vimeo 引入了来自其他 Vimeo 子域、vimeocdn.com、conciva.com、lphbs.com 甚至 Amazon 的 aws 的大量其他内容。那么,如果您使用 Vimeo(和 YouTube?),您要么有一个很长的外部站点列表,要么您只是不使用 CSP?任何见解将不胜感激!

content-security-policy

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

使用Linq to SQL时为什么会出现"Invalid Cast"?

当谈到Linq to SQL时,我有点新手,但我希望你能提供帮助.我用扩展方法编写了以下Linq to SQL语句:

Cedb.ClassEvents.Where(c => c.ClassID == 1).Select(c => c).Single()
Run Code Online (Sandbox Code Playgroud)

其中Cedb是Datacontext,ClassEvents是一个表(用于在工厂中保存的类和事件),ClassID是唯一的整数键.

此查询在LinqPad中运行正常(没有Cedb).当它返回时,它表示返回类型是"ClassEvent".在Visual Studio的Intellisense中,它告诉我此查询的返回类型是ClassEvent(在我的数据模型中创建).但是,当我尝试将结果放在变量中时:

var classEvent = Cedc.ClassEvents.Where(c.ClassID == 1).Select(c => c).Single();
Run Code Online (Sandbox Code Playgroud)

然后我收到一个错误:InvalidCastException:指定的强制转换无效.如果我使用"ClassEvent"类代替var,也会发生同样的事情.我是新手,但这个看起来像是一个真正的扣篮,而不是一个错误.是否有一些我不知道导致错误的Single方法?任何帮助,将不胜感激!

linq-to-sql

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

为什么我的内容安全策略无处不在,但Safari

我已将我的安全策略定义为:

default-src 'self'; script-src 'self'; frame-src 'self';  style-src 'self' 'unsafe-inline'; 
Run Code Online (Sandbox Code Playgroud)

(我在几页的头部仍然有CSS).

我对Firefox或Chrome没有任何问题(IE还不支持CSP)但是,当我尝试在Safari中测试时,我得到一些错误,如:

Refused to load style from 'http://localhost/styles/alliance.css' because of Content-Security-Policy.
.
.
.
Refused to load image from 'http://localhost/images/Landing1.jpg' because of Content-Security-Policy.
.
.
.
Refused to load script from 'http://localhost/JQuery/jquery-1.7.2.min.js' because of Content-Security-Policy.
Run Code Online (Sandbox Code Playgroud)

图像应该由default-src覆盖,其他两个列为"Self",所以我不知道为什么Safari不接受我的图像和脚本.我没有Mac,所以我在Windows上使用Safari(5.1.7).

有任何想法吗?谢谢!

safari web content-security-policy

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

C#中的SHA1哈希值是否会永远返回给定字符串的相同值?

我正在考虑改变我们加密密码的方法,使用单向哈希而不是加密.我考虑在密码字符串上使用简单的"GetHashCode",但MS警告此函数将来可能会更改,并且在32位和64位操作系统上有所不同.我不希望结果有所不同,因为这会导致数据库中的所有密码在输入值时不再匹配(例如,当我们都移动到.NET 9.0或其他东西时).

那么,SHA1哈希是否消除了这个问题?例如,如果我使用这个C#代码:

        var data = System.Text.Encoding.ASCII.GetBytes(value);
        data = System.Security.Cryptography.SHA1.Create().ComputeHash(data);
        return Convert.ToBase64String(data);
Run Code Online (Sandbox Code Playgroud)

这个价值永远是永远相同的结果吗?我并不太担心这个大空间的碰撞,但还有其他理由考虑更广泛的哈希吗?提前致谢!

c# hash sha1

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

访问未在ASP.NET中的App_Code中声明的类

我有时会定义Business Logic类来"帮助"我的ASPX代码隐藏类.由于它们协同工作,因此将它们包含在代码隐藏文件中对我来说是最有意义的.但是,我偶尔会喜欢从App_Code中定义的更高级别的类访问Business Logic类,但它们不能在文件外自动访问.

因此,问题是:访问App_Code中定义的类很容易,但是如何访问其他地方定义的类?

更新:另一件事,ASPX页面类和App_Code类在同一名称空间 - 这不是问题.

注意:我已经接受了那些已经做出回应的人的建议(谢谢你们)并且我正在重构以使类访问更容易.但是,我认为这个问题实际上还没有得到解答(在ASP.NET网站项目的情况下).我不再需要答案了,但是,如果有人能够澄清当他们在App_Code之外时可以看到什么类,那么它可能会帮助其他人(甚至是我,在路上).

c# asp.net

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

将 Linq 用于 ObjectDataSource:如何使用 ToShortTimeString 转换日期时间?

我正在使用 ObjectDataSource 访问业务类并尝试生成对用户有意义的输出。返回值描述了一个类(如课堂和教学,而不是软件)。我想将课程时间显示为这样的范围:“9:00 AM - 10:00 AM”。

这是我用来提取数据的 Linq 查询:

return classQuery.Select(p => new SelectClassData
                              {
                                   ClassID = p.ClassID,
                                   Title = p.Title,
                                   StartDate = p.StartDate.ToShortDateString(),
                                   EndDate = p.EndDate.ToShortDateString(),
                                   TimeOfClass =
                                   p.StartDate.ToShortTimeString() + " - " +
                                                       p.EndDate.ToShortTimeString()
                               }).ToList();
Run Code Online (Sandbox Code Playgroud)

如您所见,我在开始和结束日期中对开始和结束时间进行了编码,即使它们可能位于不同的日期。

当我执行此代码时,我得到:

“无法将表达式 'p.EndDate.ToShortTimeString()' 转换为 SQL,并且无法将其视为本地表达式。”

我知道我正在投影结果,但是,作为 Linq 的新手,我假设对 ToShortTimeString 的 C# 调用发生在投影之后。谁能帮我弄清楚如何获得我正在寻找的字符串?

c# linq objectdatasource

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

如何在按下按钮后在JQuery/ASP.NET中创建淡入淡出标签

我认为这应该很容易,但我不太确定如何连线.

我有一个用户可以定义查询的页面.完成后,用户输入查询的名称并按下按钮.我想处理按钮单击,使文本标签(或跨度)可见几秒钟然后淡出.

由于它是一个回发,我可以将ASP:Label控件变为可见 - 这很容易.现在我如何获得jquery让标签在几秒后消失?从更广泛的意义上讲,如何获得回发来触发jquery方法?

最简单的解决方案的奖金!

asp.net jquery

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

如何在聚焦JQuery按钮并按下空格键时阻止页面滚动

当焦点在JQuery对话框中的按钮上时,空格键会做两件事:它选择按钮并滚动窗口.熟悉空格键作为选择按钮的工具的人会期望第一个,但发现第二个不和谐并且不合适.

所以问题是:如何阻止页面滚动?我原以为这只是从按钮处理程序返回false的问题,但这似乎不是真的.

javascript jquery

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

为什么即使应该完成Alter Table命令,此更新也会抛出错误?

这对我来说一直是一个棘手的问题,我很想知道这些SQL Batch命令无法正常工作的原因.

我有一个表用于保存系统的配置设置.添加新设置后,我们会向表中添加一个新字段.在更新期间,我需要使用相同的脚本更改服务器上的大量数据库.通常,它们都处于相同状态,我可以执行以下操作:

Alter Table Configuration Add ShowClassesInCheckin bit;
GO

Update Configuration Set ShowClassesInCheckin=ShowFacilitiesInCheckin;
GO
Run Code Online (Sandbox Code Playgroud)

这很好用.但是,有时一个或两个数据库会更新,所以我想编写条件逻辑,只有在该字段尚不存在时才进行这些更改:

if Not Exists(select * from sys.columns where Name = N'ShowClassesInCheckin' AND Object_ID = Object_ID(N'Configuration'))
BEGIN
    Alter Table Configuration Add ShowClassesInCheckin bit;
    Update Configuration Set ShowClassesInCheckin=ShowFacilitiesInCheckin;
END;
GO
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我收到一个错误:"无效的列名'ShowClassesInCheckin'"现在,这是有道理的,因为在调用Update之前批处理表没有在批处理中进行调用(没有"GO"它不起作用)在Alter和Update之间).但这没有帮助......我仍然不知道如何实现我的目标......

sql-server

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

实现Web Api控制器 - 为什么使用IDisposable会干扰路由?

我已经实现了一个Web Api类:

public class ControllerCore : ApiController 
{
    ...do some basic things...
}
Run Code Online (Sandbox Code Playgroud)

然后在派生类中有:

public class LoginController : ControllerCore
{
    public HttpResponseMessage Get()
    {
       // Get login status
    }

    public HttpResponseMessage Post([FromBody]LoginParams login)
    {
       // Do actual log in
    }
 }
Run Code Online (Sandbox Code Playgroud)

一切正常.但我使ControllerCore一次性这样我就可以创建和清除包含开放式数据库连接管理对象:

public class ControllerCore : ApiController, IDisposable
{
    protected DataAccess DAL;
    private bool isDalDisposed;

    public ControllerCore()
        : base()
    {
        DAL = new DataAccess();  // opens a connection that will have to be cleaned up
        isDalDisposed = false; …
Run Code Online (Sandbox Code Playgroud)

c# dispose asp.net-web-api

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