Tag: 安全性

这个C代码有什么弱点?

#include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <stdio.h> int main(int argc, char **argv, char **envp) { gid_t gid; uid_t uid; gid = getegid(); uid = geteuid(); setresgid(gid, gid, gid); setresuid(uid, uid, uid); system("/usr/bin/env echo and now what?"); } 我理解的方式,上面的代码允许任意代码(或程序)执行 – 是什么让这个脆弱,以及如何利用这一点?

PDO准备报表有多安全

不久之前开始使用PDO准备好的语句,据我所知,它为您做了所有的转义/安全。 例如,假设$ _POST ['title']是一个表单字段。 $title = $_POST['title']; $query = "insert into blog(userID, title) values (?, ?)" $st = $sql->prepare($query); $st->bindParam(1, $_SESSION['user']['userID'], PDO::PARAM_INT); $st->bindParam(2, $title); $st->execute(); 这真的很安全吗? 我还需要做其他事情吗? 还有什么我需要考虑? 谢谢。

RequestVerificationToken不匹配

我有一个反CRSF MVC机制的问题。 返回的cookie和表单input不匹配。 我每次都收到一个错误,只能在一个特定的页面。 在其余的应用程序中,它运作良好。 服务器正在返回HTTP 500 Internal Server Error ,我可以在日志中看到这个exception: [System.Web.Mvc.HttpAntiForgeryException]:{“所需的防伪标记未提供或无效。”} 这是服务器正在生成的隐藏input是: <input name="__RequestVerificationToken" type="hidden" value="QK8P7rjyZE6Vm5seY7Fr704YCOoFGdTIMzl1W7R0ZFpXSMjGKLG2T05DfFSYTxvtQCEx7DDT69DGsDB2+ZXFHY8oAjiKz0gw8BhDFywgmfIpoXnGpj7fONNzIIfvbrDrE9WJsMu6Io/0bDLM5WfKs0zktiNjyOWpfYrmnfINYmjW8NLOZFoz74xTcgTptAld"> 这是返回的Cookie: Set-Cookie:__RequestVerificationToken_L2VGbG93=skmTAVI8HCbfxDS+xhioIMIISL3UOBI7qJM1JbHjTtAqKl4W70pDUcTKMm0p3R3mrHDziE8vXw0C0OO4HArzWO1/e6py+v/cFdbe9maFgjl4jMiZ9Wc4YIhC6+IUXkk6yqJDJ8dCIr8qtGaYcD9IX+m7/SlVhu521KQSWJYRcaY=; path=/; HttpOnly 当我检查服务器发送的内容时,cookie是完全一样的,但是我认为有效载荷有不同的编码: __RequestVerificationToken:QK8P7rjyZE6Vm5seY7Fr704YCOoFGdTIMzl1W7R0ZFpXSMjGKLG2T05DfFSYTxvtQCEx7DDT69DGsDB2%2BZXFHY8oAjiKz0gw8BhDFywgmfIpoXnGpj7fONNzIIfvbrDrE9WJsMu6Io%2F0bDLM5WfKs0zktiNjyOWpfYrmnfINYmjW8NLOZFoz74xTcgTptAld 差异是以两个字符显示编码: / -> %2F + -> %2B 这些是我可以find隐藏的input字段和后有效载荷之间唯一的区别。 可能是导致ValidateAntiForgeryTokenvalidation令牌失败的问题? 问候。

从jquery post调用asp.net页面发送html标记时,客户端检测到潜在危险的Request.QueryString值

我使用jQuery的ajax调用一个ASP.NET页面作为我的ajax服务器页面来保存我发送到查询string中的数据。 在ASP.NET页面中,当我正在阅读querystring我得到这个错误: A potentially dangerous Request.QueryString value was detected from the client… 我在页面中设置了ValidateRequest="false" 。 不想为所有页面设置它。 所以在页面级别而不是configuration级别: var content = "<h3>Sample header</h3><p>sample para</p>" content = encodeURIComponent(content); var url = "../Lib/ajaxhandler.aspx?mode=savecontent&page=home&ltxt=" + content; $.post(url, function (data) { //check return value and do something }); 并在我的asp.net页面: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ajaxhandler.aspx.cs" ValidateRequest="false" Inherits="MyProject.Lib.ajaxhandler" %> 但是,当我发送纯文本,而不是HTML标记,它工作正常。

将CreditCard信息存储到DataBase中的最佳实践

在我国,网上支付并不是一件老旧的事情,去年我第一次看到一个直接向当地银行账户付款的networking应用程序。 所以,我是一个新手编码networking支付系统。 我的问题是,什么是将信用卡信息存储到数据库中的最佳做法… 我有很多想法:encryption信用卡,数据库安全限制等。 你做了什么?

为什么保存会话保存在数据库中呢?

我已经看到,codeigniter有能力保存会话值在数据库中。 它说在数据库中保存会话是一个很好的安全实践。 但是我认为将会话信息保存在数据库中有助于提高性能。 他们只保存会话的一些元素,例如: CREATE TABLE IF NOT EXISTS 'ci_sessions' ( session_id varchar(40) DEFAULT '0' NOT NULL, ip_address varchar(16) DEFAULT '0' NOT NULL, user_agent varchar(50) NOT NULL, last_activity int(10) unsigned DEFAULT 0 NOT NULL, user_data text NOT NULL, PRIMARY KEY (session_id) ); 但是,如果一个网站使用更多的会话variables,如用户名,上次login时间等,我可以将它们保存在数据库中,并在程序中使用它们。 我必须将这些列添加到同一个表吗? 我认为将会话信息保存在数据库中仅有助于减lessWeb服务器的内存使用量(RAM)。 任何人都可以解释一下它在提高安全性方面的意义吗?

使用SecureString

这可以简化为一个class轮吗? 只要secureString得到正确的初始化,随意彻底重写它。 SecureString secureString = new SecureString (); foreach (char c in "fizzbuzz".ToCharArray()) { secureString.AppendChar (c); }

如何确保编译器优化不会引入安全风险?

我必须编写一个Windows服务来处理某些机密数据(如PIN码,密码等)。 这些信息需要很短的时间:通常它们几乎立即被发送到智能卡读卡器。 让我们考虑这段代码: { std::string password = getPassword(); // Get the password from the user writePasswordToSmartCard(password); // Okay, here we don't need password anymore. // We set it all to '\0' so it doesn't stay in memory. std::fill(password.begin(), password.end(), '\0'); } 现在我关心的是编译器优化。 在这里编译器可能会检测到密码即将被删除,并且在这一点上改变它的值是无用的,只需要删除这个呼叫。 我不希望我的编译器关心未来未被引用的内存的价值。 我的担心是否合法? 我怎样才能确定这样一段代码不会被优化?

将PHP(/ PHP-FPM / Apache)的临时上传文件存储在RAM中而不是文件系统(或仅encryption)?

原来的问题 所以我正在进行的这个项目对于file upload是致命的。 在这个问题的范围内,我没有用这个术语来表示有效载荷。 我在讲保密 。 程序总是会崩溃,并使临时文件在文件系统中徘徊。 这很正常。 稍微保密的偏执可以写一个cronjob,每隔几分钟打一个临时文件夹,并在cronjob调用之前删除几秒钟以前的任何东西(不是所有的东西 ,只是因为否则它可能捕获正在上传的文件)。 …不幸的是,我们把这个偏执狂进一步说了一遍: 理想情况下,我们很乐意永远不会从file upload到临时文件,而是在与进程相关的RAM中。 有没有办法教PHP寻找临时文件在内存中而不是在文件系统中的斑点? 我们使用PHP-FPM作为CGI处理程序,使用Apache作为我们的networking服务器,以防万一。 (另请注意:'Filesystem'是这里的关键字,而不是'disc',因为当然有方法将文件系统映射到RAM,但是这不能修复可访问性和自动的崩溃后清理问题。 ) 或者,这些临时文件是否可以在写入光盘时立即进行encryption ,从而不会在没有encryption的情况下保存在文件系统中? 线程概述 不幸的是,我只能接受一个答案 – 但是对于任何读这个答案的人来说,整个线索是非常有价值的,并且包含了许多人的集体见解。 根据你希望达到的目标,被接受的答案可能对你并不感兴趣 。 如果您是通过search引擎来到这里的, 请花一点时间阅读整篇文章 。 下面是我看到的用于快速参考的用例汇编: Re:PHP的临时文件 RAM而不是光盘(例如由于I / O问题)→ RAMdisk /可比( 质粒87 , Joe Hopfgartner ) 立即(每文件系统用户)encryption→encryption( ADW )(根据Sander Marechal + +) 安全的文件许可→ 限制的本地Linux权限(可select每个虚拟主机 ) ( Gilles )或SELinux(请参阅各种评论) 过程连接的内存,而不是文件系统(所以进程崩溃删除文件) (本来是由问题的意图) 不要让文件数据直接到达PHP→ […]

mysqldump由cron和密码安全启动

我写了一个脚本来备份我的MySQL数据库,使用: mysqldump –opt –all-databases -u user -pmypassword > myDump.sql 一个cron每晚都会启动它,并将结果传给另一台服务器。 mypassword在我的脚本中显示清楚,每个人都可以看到它的适当的权利。 我也被告知/ proc问题(cmd运行可以看到)。 MySQL文档说: 在命令行上指定密码应被视为不安全。 请参阅第7.6节“确保您的密码安全”。 我还没有find这个神奇的7.6节。 什么是处理自动mysqldump和密码安全性的好习惯?