我最近阅读了Jeff 关于XSS的一篇文章,它让我思考如何更好地保护我家庭认证系统中的登录cookie.
基本上我现在做的就是这个(注意,一切都是可配置的,目前设置为true):
protected static string ComputeLoginHash(string passwordhash){
StringBuilder sb=new StringBuilder();
sb.Append(passwordhash);
if(CookieUseIP){
sb.Append(HttpContext.Current.Request.UserHostAddress);
}
if(CookieUseBase){
sb.Append(HttpContext.Current.Request.MapPath("/"));
}
if(CookieUseBrowserInfo){
sb.Append(HttpContext.Current.Request.UserAgent);
}
sb.Append(SiteName);
return ComputeHash(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
(请注意,passwordhash由密码,唯一salt和用户名组成).
好的,所以我做的一个可疑的事情是使用UserAgent字符串.这样做有害吗?或者是在正常操作下更改其UserAgent字符串的浏览器(如同,没有更新)?我的目标基本上是针对攻击者是否获得登录cookie,因为他们无法对其进行任何操作.这有助于实现我的目标,还是对用户来说过于繁琐?目前,我在cookie纯文本中存储的唯一信息是用户名.
看起来最现代的(如过去20年)处理器使用的是小端,或者至少更喜欢它(如果是双端的).他们是否有理由将big-endian作为所有网络协议的通用顺序?它是否有任何实际优势,除了更容易用于大端处理器?
我正在尝试按照此处所述进行嵌套转发器,但这是错误的.
我的中继器如下:
<asp:Repeater ID="HouseholdRepeater" runat="server">
<ItemTemplate>
<div><b><%# DataBinder.Eval(Container.DataItem,"Name") %></b></div>
<div>
<asp:Repeater ID="ApplicationRepeater" runat="server" DataSource="<%#((DataRowView)Container.DataItem).Row.GetChildrows("Applications") %>"> <!-- error here -->
<ItemTemplate>
<div>
<a href="<%# DataBinder.Eval(Container.DataItem,"Link") %>"><%# DataBinder.Eval(Container.DataItem,"Description") %></a>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
</ItemTemplate>
</asp:Repeater>
Run Code Online (Sandbox Code Playgroud)
我得到的错误消息是"服务器标签格式不正确".
它看起来就像我的例子.我没看到它有什么问题.任何想法如何使这项工作?
此外,我使用Linq查询中的匿名对象在代码中对其进行了数据绑定.
我最近和一位朋友谈过,他告诉我C++ Metro应用程序中不允许使用CopyFile和CopyFileEx(这似乎是正确的).为什么是这样?为什么他们提出了一个名为CopyFile2的奇怪替代品
他们都复制了一个文件,为什么要禁止部分已建立的API提出新的功能来解决?
我对TFS有点新鲜.我使用的每个其他源代码控制都非常容易的一个常见操作是比较两个不同的修订版本.假设您有3个修订版.版本3是我当前的本地副本.修订版2(或其他)引入了一些回归.所以,我需要看看从修订版1到修订版2有什么变化.我并不关心修订版3中的更改.
我如何在TFS中执行此操作?
我最近一直在检查Windows Store的WinRT(C#)示例.我看到的一个非常酷的东西是Toast Notifications.我可以想到它们有一百万种不同的用途,但不是一种也适合用作Windows应用程序的用途.
那么,是否可以在常规的.Net桌面应用程序中使用Windows 8中的Toast Notifications?
我正在使用Attributes构建一些东西.我真的想要作为属性实现的一件事是convert a string to this property's type using this function.现在,我有这个:
public delegate object ParameterConverter(string val);
[AttributeUsage(AttributeTargets.Property)]
public class ParameterConverterAttribute : ParameterBaseAttribute
{
ParameterConverter Converter;
public ParameterConverterAttribute(ParameterConverter converter)
{
Converter=converter;
}
public object Convert(string val)
{
return Converter(val);
}
}
Run Code Online (Sandbox Code Playgroud)
我这样使用它:
public class Tester
{
[ParameterConverter(new ParameterConverter(TestConverter)] //error here
public int Foo{get;set;}
static object TestConverter(string val)
{
return 10;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,.Net或至少C#似乎不支持这种事情.似乎属性内的委托不起作用.
是否有解决此问题的方法或处理此问题的好方法?
我有一个"唯一"类型的整数.我这样使用它:
int unique=0;
public int GetUniqueId()
{
return unique++;
}
Run Code Online (Sandbox Code Playgroud)
我知道我有点偏执,但这是一个原子操作,还是需要某种形式的锁?此函数将用于极其并发的类中.
我正在写一些自定义IL并需要相当于的东西return SomeStaticField != null;.这是我的自然结论:
volatile.ldsfld ...SomeStaticField //volatile is needed here for unrelated reasons
ldnull
ceq
not
ret
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用.我确认SomeStaticField为null,但是这个函数最终会返回true.我知道C#使用分支来构建这样的构造,我也可以使用它,但它让我感到困惑的是为什么这不会有预期的行为
一个完整且可验证的示例(作为库):
.assembly extern /*23000001*/ mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly 'BareMetal'
{
.custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() = (
01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 …Run Code Online (Sandbox Code Playgroud) 我试图让 yasm 输出一个 16 位近相对 jmp。具体来说,它将是带有操作数大小覆盖前缀的 rel16/rel32 jmp 操作码。我知道jmp short labelwill 发出一个 8 位近相对 jmp,ajmp long label将发出一个 32 位近相对 jmp,但如何让它发出 16 位近相对 jmp?
具体来说我正在使用bits 32和cpu i686
.net ×4
c# ×3
asp.net ×2
api ×1
assembly ×1
c++ ×1
cil ×1
concurrency ×1
cookies ×1
data-binding ×1
delegates ×1
endianness ×1
file-copying ×1
locking ×1
networking ×1
reflection ×1
repeater ×1
security ×1
tfs ×1
tfs2010 ×1
toast ×1
windows-8 ×1
x86 ×1
yasm ×1