要构建一个安全的系统,在开始安全编程之前,我们是否可以假设加密保证了完整性?
据我从读这里,事实的验证码不是可以用100%secure.what,而不是验证码?作为一名程序员,你怎么看?怎么解决这个问题?
编辑:感谢所有答案.
在这些日子里,我对软件安全感兴趣.正如我正在阅读论文时,我发现有许多攻击,研究人员正试图为软件发明新方法以获得更安全的系统.
这个问题可以是一般性的,包括所有类型的攻击.在SO中有许多有经验的程序员,我只是想学习用什么来检查你的代码来对付这些攻击?你有没有使用过的工具或者你不关心?
例如,我听说过静态/动态代码分析和模糊测试.
谢谢
什么是防止缓冲区溢出攻击的想法?我听说过Stackguard,但到目前为止,这个问题是通过应用stackguard还是将它与其他技术结合起来完全解决的?
热身后,作为一名经验丰富的程序员
为什么你认为 为缓冲区溢出攻击提供足够的防御是如此困难?
编辑:感谢所有答案并保持安全标签活跃:)
我正在研究一个项目,我有一个用户的击键时间数据的子集.这意味着用户进行了n次尝试,我将在各种分类算法中使用这些记录的尝试时间数据,以供将来用户尝试验证登录过程由用户或其他人完成.(我可以说这是生物识别技术)
我有3次不同的用户登录尝试过程,当然这是无限数据的子集.
直到现在这是一个简单的分类问题,我决定使用WEKA,但据我所知,我必须创建一些假数据来提供分类算法.用户的测量尝试将为1,假数据将为0.
我可以使用一些优化算法吗?或者有没有办法创建这些假数据以获得最小误报?
谢谢
pattern-recognition classification machine-learning biometrics weka
我开始使用NaiveBayes/Simple分类器进行分类(Weka),但是在训练数据时我有一些问题需要理解.我正在使用的数据集是weather.nominal.arff.

当我使用选项中的使用训练测试时,分类器结果是:
Correctly Classified Instances 13 - 92.8571 %
Incorrectly Classified Instances 1 - 7.1429 %
a b classified as
9 0 a =yes
1 4 b = no
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,我应该从错误的分类实例中理解什么?为什么会出现这样的问题?哪个属性集合分类不正确?有没有办法理解这个?
其次,当我尝试10倍交叉验证时,为什么我会得到不同(较少)正确分类的实例?
结果是:
Correctly Classified Instances 8 57.1429 %
Incorrectly Classified Instances 6 42.8571 %
a b <-- classified as
7 2 | a = yes
4 1 | b = no
Run Code Online (Sandbox Code Playgroud) 我正在研究套接字程序,编译时一切都很好.首先,我编译并运行服务器,然后编译并运行客户端.服务器运行正常,但是当客户端启动时,我在Connect()函数中收到一条错误消息.虽然套接字似乎没问题,但客户端将无法连接,服务器也看不到连接尝试.
错误消息是:
连接:非套接字上的套接字操作
这是服务器端代码:
if ((ListeningSocket = socket(AF_INET, SOCK_STREAM,0 )) == -1){
printf("socket failed!\n");
exit(1);
}
else
printf("Server: socket() is OK!\n");
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(5000);
ServerAddr.sin_addr.s_addr = INADDR_ANY; // any one for any network can connect
memset(&(ServerAddr.sin_zero), '\0', 8); //
if (bind (ListeningSocket, (struct sockaddr *)&ServerAddr, sizeof(struct sockaddr))==-1)
{
printf("Server: bind() failed!\n");
exit (1);
}
else
printf("Server: bind() is OK!\n");
if (listen(ListeningSocket,5)== -1){
printf("Server: Error listening on socket\n");
exit (1);
}
else{
printf("Server: listen() is OK, …Run Code Online (Sandbox Code Playgroud) 在这些日子里,我正在玩线程库并试图实现一些功能.其中一个教程说要运行程序使用:
gcc -lpthread -lrt -lc -lm project1.c scheduler.c -o out
Run Code Online (Sandbox Code Playgroud)
首先,我需要深入了解gcc在每一行中所做的事情,
lpthread用于什么?lrt -lc -lm的贡献是什么?
project1.c和scheduler.c是一起编译的,所以我应该理解什么?我检查
了代码,其中任何一个都没有包含在project1.c或scheduler.c中.
其次,作者声明要运行你必须使用的程序
./out number filename (For example, ./out 2 sample.txt)
Run Code Online (Sandbox Code Playgroud)
为了使这些清楚,我理解主函数获取数字和sample.txt作为输入.(?)
谢谢你的回答并让我清楚.
我的系统管理员建议我在设置对文件和目录的访问控制时要小心.他给了我一个例子,我感到困惑,这里是:一个保护模式为644(八进制)的文件包含在保护模式为730的目录中.所以它意味着:
在这种情况下如何妥协文件?
在这些日子里,我正在使用atol(),atof()和atoi()的C函数,从博客文章中我找到了一个教程并应用了:
这是我的结果:
void main()
{
char a[10],b[10];
puts("Enter the value of a");
gets(a);
puts("Enter the value of b");
gets(b);
printf("%s+%s=%ld and %s-%s=%ld",a,b,(atol(a)+atol(b)),a,b,(atol(a)-atol(b)));
getch();
}
Run Code Online (Sandbox Code Playgroud)
有atof()返回字符串的浮点值并atoi()返回整数值.
现在看看3我检查这段代码之间的区别:
main()
{
char a[]={"2545.965"};
printf("atol=%ld\t atof=%f\t atoi=%d\t\n",atol(a),atof(a),atoi(a));
}
Run Code Online (Sandbox Code Playgroud)
输出将是
atol=2545 atof=2545.965000 atoi=2545
char a[]={“heyyou”};
Run Code Online (Sandbox Code Playgroud)
现在当你运行程序时,以下将是输出(为什么?,是否有任何解决方案将纯字符串转换为整数?)
atol=0 atof=0 atoi=0
Run Code Online (Sandbox Code Playgroud)
该字符串应包含数值.现在将此程序修改为
char a[]={“007hey”};
Run Code Online (Sandbox Code Playgroud)
这种情况下的输出(在Red Hat Linux中测试)将是
atol=7 atof=7.000000 atoi=7
Run Code Online (Sandbox Code Playgroud)
所以这些功能只用了007,而不是剩下的部分(为什么?).
现在考虑一下
char a[]={“hey007?};
Run Code Online (Sandbox Code Playgroud)
该计划的输出将是
atol=0 atof=0.000000 atoi=0
Run Code Online (Sandbox Code Playgroud)
所以我只想将我的字符串转换为数字,然后再转换为相同的文本.我玩这些功能,如你所见,我得到了非常有趣的结果.
这是为什么?
是否还有其他函数可以从/转换为字符串/整数,反之亦然?
编辑:
所以作为输入,如果我拿一些名字,或者其他什么,我会将它们转换为整数/浮点数......然后应用其他一些函数.
另外,我很好奇当我使用你的任何建议时,我是否会使用相同的输入采用相同的输出?
我有一个巨大的文件,作为输出,一些列没有值,我需要用0填充这些列进行进一步分析.我可以用空格或制表符分隔列,现在在下面用制表符分隔.

我有一个文件,下面显示了两个输入:
34.800287000 0.077352000
我正在读取一个文件(通过getline然后定义stringstream)并将其保存在我的类变量中,这些变量都定义为double.但是,当我检查我的变量时,我看到:
34.8003 0.077352
编辑:我正在使用cout来检查我的变量.
这是为什么 ?
谢谢.
security ×5
c ×3
c++ ×3
weka ×2
awk ×1
biometrics ×1
cryptography ×1
encryption ×1
file ×1
function ×1
fuzz-testing ×1
gcc ×1
inode ×1
integrity ×1
javascript ×1
perl ×1
regex ×1
sed ×1
sockets ×1
testing ×1
unix ×1