我最近阅读了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纯文本中存储的唯一信息是用户名.
系统编程中的当前项目是提出一个ASCII压缩器,它删除顶部的零位并将内容写入文件.
为了便于解压缩,将原始文件大小写入文件,然后压缩char字节.有两个文件可以运行测试 - 一个是63字节长,另一个是5344213字节.我的代码在第一个测试文件中按预期工作,因为它写入56个字节的压缩文本和4个字节的文件头.
但是,当我在长测试文件上尝试它时,压缩版本比原始版本短3个字节,当它应该大约749KiB,或原始大小的14%.我已经计算出长测试文件的前两个写循环的二进制位移值,它们与我的测试打印输出中记录的内容相匹配.
while ( (characters= read(openReadFile, unpacked, BUFFER)) >0 ){
unsigned char packed[7]; //compression storage
int i, j, k, writeCount, endLength, endLoop;
//loop through the buffer array
for (i=0; i< characters-1; i++){
j= i%7;
//fill up the compressed array
packed[j]= packer(unpacked[i], unpacked[i+1], j);
if (j == 6){
writeCalls++; //track how many calls made
writeCount= write(openWriteFile, packed, sizeof (packed));
int packedSize= writeCount;
for (k=0; k<7 && writeCalls < 10; k++)
printf("%X ", (int)packed[k]);
totalWrittenBytes+= packedSize;
printf(" %d\n", packedSize); …Run Code Online (Sandbox Code Playgroud) 据我所知,每个对象都会发生Kryo序列化/反序列化.是否可以将多个对象序列化为单个文件?在另一个类似的SO问题中提出的解决方法之一是使用一组对象.考虑到需要序列化的大量数据,我觉得它不会像应有的那样高效.这是正确的假设吗?
我在C++工作.我给了一个10位数的字符串(字符数组),其中可能有或没有3个破折号(最多13个字符).是否有内置的方式使用流向右对齐它?
我如何才能正确地打印到流中?是否有内置函数/方法来执行此操作,还是需要在字符数组的开头填充3个空格?
我正在处理ostream是具体的,不确定这是否重要.
我想在c#中遍历内置类型(bool,char,sbyte,byte,short,ushort等).
怎么做?
foreach(var x in GetBuiltInTypes())
{
//do something on x
}
Run Code Online (Sandbox Code Playgroud) 所以,我学习了C++(基础知识)并且我想编写软件,但是我偶然发现了一个我不知道从哪里开始的问题.到目前为止,在理解用于GUI构建的库时,学习C++似乎是最简单的部分,这个概念我还没有完全理解.我搜索了很多,甚至不能决定是MFC,Win32或Qt上的新人.
Qt C++ GUI看起来像一个有趣且易于使用的软件,可快速在那里提供类的定义.
使用Visual的MFC,我在预先制作的项目文件和许多类的描述中预先看到了很多代码,但是由于我必须上网,所以获取定义会慢一些.
Win32显然是用C编写的,并没有更新太多?
很多人也推荐使用Java和C#,但是当我没有C++并且还有足够的实践时,我对学习一门新语言不感兴趣.
不知道该怎么做.
如何输出以下内容?我想在4个"块"类之后输出"网格"类.内部div是从视图返回的对象.
<div class="grid">
<div class="block">...</div>
<div class="block">...</div>
<div class="block">...</div>
<div class="block">...</div>
</div>
<div class="grid">
<div class="block">...</div>
<div class="block">...</div>
<div class="block">...</div>
<div class="block">...</div>
</div>
...
Run Code Online (Sandbox Code Playgroud)
我尝试过使用forloop.counter0 | divisibleby:4但没有成功.
CompositeTransform仅用于silverlight?.无论如何我们可以在WPF或任何等效的替代品中使用它吗?
根据Java Generics FAQ http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeParameters.html#FAQ302 ,类型参数不能以这种方式前向引用
<A extends B, B> // error
Run Code Online (Sandbox Code Playgroud)
但是没关系
<A extends List<B>, B> // ok
Run Code Online (Sandbox Code Playgroud)
这两个例子用最新的验证jdk 1.6.0_24.
我的问题是,在语言规范中,这是指定的,隐含的还是可扣除的(即如果它是不真实的,其他事情可能会爆炸).我找不到任何地方.
更新
在javac7中,它是允许的.直观地说,类型参数的顺序无关紧要; 类型系统要求类型变量之间没有循环依赖关系:<A extends B, B extends A>.以前,这可以通过禁止前向参考来保证.显然,javac 7经过改进以放宽排序,同时无论排序如何都能检测循环.
尝试安装rmagick gem时,我收到如下所示的错误.我使用RVM,Ruby 1.9.2-head和Rails 3.05在Snowleopard 10.6上.回答类似的问题建议安装ImageMagick,我成功地做了.其他建议安装"libmagick9-dev库",但是,我无法弄清楚如何做到这一点.
我是一名新开发人员,非常感谢您对现有解释或资源的任何帮助或指示.谢谢!
jjdevenuta(opal)$ gem install rmagick
Fetching: rmagick-2.13.1.gem (100%)
Building native extensions. This could take a while...
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.
/Users/jjdevenuta/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /Users/jjdevenuta/.rvm/gems/ruby-1.9.2-head@rails3/bin:/Users/jjdevenuta/.rvm/gems/ruby-1.9.2-head@global/bin:/Users/jjdevenuta/.rvm/rubies/ruby-1.9.2-head/bin:/Users/jjdevenuta/.rvm/bin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/X11/bin
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log …Run Code Online (Sandbox Code Playgroud)