Articles of 安全

如何检查用户是否具有数据库查询权限?

比方说,我有一个网站,汽车经销商pipe理他们的汽车库存。 每个汽车经销商都有自己的company_id ,他们的员工使用staff_id员工账户。 当工作人员在页面http://sellcarsfaster.com/inventory/car/jdksf9843他们应该看到他们公司的车ID为jdksf9843 。 如果他们复制这个url并将其发送给同事,那么其他员工应该可以查看该车。 但是,如果url发送给非职员,则该用户不能查看该车辆。 汽车应该只能通过那个汽车经销商的工作人员进入。 再进一步,我怎样才能检查各种可能的数据库查询的权限与各种关系的各种资产? 如下所示: http://sellcarsfaster.com/inventory/car/jdksf9843/tires/93sl9843 http://sellcarsfaster.com/insurance/2djlasd8 http://sellcarsfaster.com/history/event/8o4jsdfj 在这种应用程序中检查查看权限是否有最佳做法? 后端应该做些什么? 我将不得不做计算繁重的数据库查询进行身份validation吗? 我必须为每个数据库查询编写自定义身份validationfunction吗? 基于staff_id或company_id身份validation安全吗? 如果有人能指出我正确的方向,将不胜感激! PS我目前在我的后端有JSON Web Token身份validation,但是并不妨碍不同公司的员工只使用url来看别人的库存。 使用NodeJS和Postgres与AWS Cognito进行用户authentication

Node.js安全性:防止未经授权的更改

是否有可能在某些打包/签名状态下托pipe和运行Node.js,以便未经授权的人员更改为无法访问服务器的应用程序逻辑? 并且让node.js应用程序的安全级别可以接受,例如在金融行业?

TLS – Node.js服务器到Android应用程序

我将在未来几周内开始一个新项目,但是我有一些与应用程序“devise”有关的问题。 该应用程序将是一个服务器+数据库,谈话的Android应用程序,也有它自己的数据库(离线使用)。 连接将用于交换使用自定义“协议”(游戏networking协议封装在TLS中)encryption的string。 这意味着应用程序将具有两层安全性: TLS – >针对MitM攻击 自定义协议 – >反对“游戏中的黑客”,如游戏包篡改 我的问题如下: Node.js和Android之间可以使用TLS吗? 这个问题有什么好的联系吗? (我读了一些与java和node.js中不同的证书格式的问题,它与OpenSSL和EVP_BytesToKey函数有关) – > 使用Node.jsencryption模块encryption并使用Java解密(在Android应用程序中) – > http://olabini.com/blog/tag/evp_bytestokey/ 有没有混淆Android应用程序的源代码的方式,以便自定义“协议”可以安全地解密客户端? 还是应该把所有的魔法都发生在服务器端? (我不希望解密源代码对用户可见,以剖析自定义协议并开始开发黑客)。 有关提高我的node.js服务器的安全性的一般提示或链接? (我听到一些人在谈论Nginx代理,但是由于我没有提供网页,它仍然是有意义的吗?它不会超载服务器?) 提前感谢你!

在会话ID中包含工作端口号的安全影响

我写了一个多进程实时WebSocket服务器,它使用会话ID来根据正在监听的端口号将stream量负载平衡到相关的worker。 会话ID包含主机名,源端口号,工作端口号以及工作人员用来唯一标识客户端的实际哈希ID。 典型的会话ID如下所示: localhost_9100_8000_0_AoT_eIwV0w4HQz_nAAAV 我想知道将工作端口号(在这种情况下为9100)作为会话ID的一部分的安全含义。 我有点担心拒绝服务(DoS)威胁 – 理论上,这可能会允许恶意用户生成大量针对特定端口号的HTTP请求(例如,使用包含该端口号的假sessionID ) – 但是这是一个严重的威胁? (假设你有体面的防火墙)? 像Google这样的大公司如何从安全angular度处理粘性会话? 还有其他的威胁我应该考虑吗? 我这样devise服务器的原因是要考虑到最初的HTTP握手,以及什么时候客户端不支持WebSocket(在这种情况下,使用HTTP长轮询 – 因此,来自客户端的后续HTTP请求需要去在后端的同一个工人)。

Nodejs:在使用setuid / setgid之后在端口80上监听

我刚刚得到一些互联网文章的说服,使用setuid / setgid切换到较低特权用户可能是重要的。 由于我正在开发一个networking应用程序,我决定去www-data 。 因此,我使用userid NPM模块来计算www-data的用户和组ID,然后更改为它。 但是,当我这样做 – 而且完全没有关系 – 我得到以下(在这个例子中,安全处理程序在代码的非常非常底部执行): 2014-09-04T23:07:05.812Z – info: BIRD3 Security -> Changed to www-data:www-data (33:33) events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EACCES at errnoException (net.js:904:11) at Server._listen2 (net.js:1023:19) at listen (net.js:1064:10) at net.js:1146:9 at dns.js:72:18 at process._tickCallback (node.js:419:13) at Function.Module.runMain (module.js:499:11) at startup (node.js:119:16) […]

如何从另一台服务器authentication用户会话?

这是用例: 服务器A对用户进行身份validation并为用户创build一个会话。 用户想要与服务器B通信 服务器B需要在用户可以继续之前authentication用户。 我的问题: 服务器B应如何authentication用户? 注意:服务器A是一个node.js,express服务器B是socket.io专用服务器。

请求服务器日志中的第三方网站

在我的web服务器日志中(我正在使用express运行node.js),混合了有效的文件请求,我看到以下内容: [app-0 (out)] GET / 200 1ms – 3.95kb [app-0 (out)] GET / 200 2ms – 3.95kb [app-0 (out)] GET / 200 1ms – 3.95kb —[app-0 (out)] GET http://www.mafengwo.com/ 200 1ms – 3.95kb [app-0 (out)] GET / 304 1ms 我不是“magengwo.com”的所有者,我不确定攻击者是如何查询我的web服务器的另一个网站的(而且它有点让人担心,那个节点以200响应)。 我会认为这是一件坏事,虽然我不知道如何重现这个问题。 任何帮助或解释什么发生在这里将不胜感激

节点JS / Hapi图片上传和安全

像许多networking服务一样,我们需要获取访问者的个人资料图片。 这是通过一个简单的hapi上传脚本完成的。 我们现在想知道哪些最佳做法可以防止我们获得可能包含脚本的恶意图像,这些图像可以直接或通过漏洞执行。 什么是最好的安全过程? 调整图像大小? 但是可用的几种格式呢? 使用两个不同的库,将所有内容都转换为PNG格式的两步传递? 有没有为此目的而编写的npm? build议需要。

安全,以防止与节点服务器的游戏中的黑客

我正在做一个浏览器纸牌游戏。 每个玩家都有一大堆可用卡购买的卡。 我需要确保一个玩家不能破解他在浏览器中使用的牌,所以服务器必须authentication他拥有他使用的每张牌,而且它确实是同一张牌。 为了使应用程序更快,我想将卡片数据存储在外部JSON文件中,只说“player x拥有卡片y和z”,并从JSON获取这些卡片上的信息。 有什么安全模式可以帮助我吗?

有没有办法来validation一个Ajax请求是从一个给定的域名?

我打开(也是欢迎)替代我将要问的东西,而且对重新发明车轮不感兴趣,所以如果有更好的方法,我很想知道它。 我的愿望是添加一个身份validation令牌给基于浏览器的AJAX API调用。 API是用Node.js编写的 鉴于基于浏览器的Ajax调用是全世界都可以看到的,我试图想出一些scheme,把这个密钥公开给恶意用户不会破坏安全性。 因此,我想将令牌与托pipe站点的域相结合,以保证请求是由授权用户进行的。 我担心的是,没有办法保证这一点。 我想知道是否传入的AJAX头可以欺骗,使其看起来像来自abc.com的电话,实际上它是由angry-north-korean-hackerz.net。