我正在开展基于网络的比赛,该比赛应允许匿名用户投票,但我们希望阻止他们多次投票.可以使用匿名代理绕过基于IP的限制,用户可以清除cookie等.可以使用Silverlight应用程序,该应用程序可以访问独立存储,但用户仍然可以清除它.
如果没有一些小丑用机器人或其他东西投票,我认为不可能做到这一点.知道了吗?
我目前正在使用 Linq to NHibernate (尽管这不是这个问题的问题)对我的数据库执行查询,我希望能够测试当前结果IQueryable实例是否已执行。
调试器知道 myIQueryable尚未被“调用”,因为它告诉我扩展 Results 属性将“枚举”它。有没有一种方法可以让我以编程方式识别这一点。
我希望这是有道理的 :)
我们正在为新的内部应用程序建立新的框架和业务方式.我们当前的设计规定所有安全逻辑都应由我们的数据库处理,所有信息(我的意思是所有信息)都将通过存储过程进出数据库.
理论上,数据访问层从存储过程请求信息并将认证传递给数据库.数据库确定用户的角色/权限,并决定是否执行任务(无论是检索数据还是进行更新).
我想这意味着更少的数据库事务.一次调用数据库.如果安全性在我们的数据访问层中,则需要1个数据库调用来确定用户是否具有适当的权限,然后单独的数据库调用来执行操作.
举个例子,我发现SQL Management studio完全缺乏IDE.我主要担心的是,我们最终必须在存储过程中维护一些讨厌的业务逻辑,以获得非常小的性能提升.
现在,我们正在为我们的ORM使用LINQ.它似乎轻快,但最重要的是,它很容易快速发展.
维护成本是否值得性能提升?我们是否在愚弄自己,以为甚至会有明显的性能提升?或者我们只是为自己制造噩梦?
我们的环境:
我正在遵循WPF UI 的MV-VM模式.我想将一个命令连接到TextBox的TextChanged事件到我的ViewModel类中的命令.我可以设想完成此任务的唯一方法是继承TextBox控件,并实现ICommandSource.然后,我可以指示从TextChanged事件触发该命令.对于看起来如此简单的事情来说,这似乎太过分了.
是否有一种更简单的方法(比继承TextBox和实现ICommandSource)将TextChanged事件连接到我的ViewModel类?
在C++中,我试图在一个catch中捕获所有类型的异常(比如catch(Exception)在C#中).怎么做?更重要的是,如何才能捕获除零例外?
好的,这是411 - 我的Global.asax.cs文件中有以下事件处理程序:
private void Global_PostRequestHandlerExecute(object sender, EventArgs e)
{
if (/* logic that determines that this is an ajax call */)
{
// we want to set a cookie
Response.Cookies.Add(new HttpCookie("MyCookie", "true"));
}
}
Run Code Online (Sandbox Code Playgroud)
该处理程序将在Ajax请求期间运行(作为我正在使用的Ajax框架的结果),以及在其他时候 - if语句的条件过滤掉非Ajax事件,并且工作正常(它不相关)在这里,所以为了简洁起见我没有包含它.
我们可以说这很好用 - 设置了cookie,我能够在客户端上读取它,而且一切都很顺利.
现在对于让我疯狂的部分.
这是我用来删除cookie的JavaScript函数:
function deleteCookie(name) {
var cookieDate = new Date();
cookieDate.setTime(cookieDate.getTime() - 1);
document.cookie = (name + "=; expires=" + cookieDate.toGMTString());
}
Run Code Online (Sandbox Code Playgroud)
所以,当然,在设置cookie之后的某个时刻,我会这样删除它:
deleteCookie("MyCookie");
Run Code Online (Sandbox Code Playgroud)
只是,这不起作用; cookie仍然存在.那么,有谁知道为什么?
我正在编写一个小桌面应用程序,它应该能够加密数据文件并用密码保护它(即必须输入正确的密码才能解密).我希望加密数据文件是自包含和可移植的,因此必须将身份验证嵌入到文件中(或者我假设).
我有一个看似可行的策略,看起来很合理,基于我所知道的(这可能只是危险),但我不知道它是否真的是一个好的设计.那么告诉我:这是疯了吗?有更好/最好的方法吗?
基本上我是从实现网站密码的常用方法推断出来的(当你没有使用OpenID时),即在你的数据库中存储用户密码的(盐渍)哈希,而不是保存实际的密码.但由于我使用散列用户密码作为对称加密密钥,因此我无法使用相同的值进行身份验证.所以我再次哈希,基本上把它当作另一个密码处理,并将双重哈希值保存在数据文件中.这样,我可以将文件带到另一台PC,只需输入我的密码即可解密.
那么这个设计是合理安全的,还是绝望的天真,或介于两者之间?谢谢!
编辑:澄清和后续问题re:盐.
我认为盐必须保密才有用,但你的答案和链接暗示情况并非如此.例如,由erickson(下面)链接的这个规范说:
因此,这里定义的基于密码的密钥推导是密码,盐和迭代计数的函数,其中后两个量不需要保密.
这是否意味着我可以将盐值存储在与散列键相同的位置/文件中,并且仍然比在散列时根本不使用盐时更安全?这是如何运作的?
更多上下文:加密文件不是为了与他人共享或解密,它实际上是单用户数据.但是我想将它部署在我无法完全控制的计算机上的共享环境中(例如在工作中),并且能够通过简单地复制文件来迁移/移动数据(所以我可以在家里,在不同的地方使用它工作站等).
我正在从一个并不总是包含内容类型的服务下载一些图像,并且没有为我正在下载的文件提供扩展名(呃,不要问).
在.NET中确定图像格式的最佳方法是什么?
正在读取这些下载图像的应用程序需要具有适当的文件扩展名或者所有地狱都会松动.
c# ×3
asp.net ×2
.net ×1
ajax ×1
c++ ×1
command ×1
content-type ×1
cookies ×1
cryptography ×1
encryption ×1
image ×1
ip-address ×1
javascript ×1
linq ×1
mime-types ×1
mvvm ×1
passwords ×1
php ×1
security ×1
silverlight ×1
sql ×1
try-catch ×1
wpf ×1
xml ×1