问题标签 [secure-coding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
26978 浏览

php - 如何保护项目中的数据库配置文件?

我在 php 文件上创建了用于与数据库服务器建立连接。在这个文件中,我正在使用mysql_connect()带有参数主机、用户名和数据库服务器密码的函数。

现在在这种情况下,用户名和密码对其他人可见。

我找到了另一种确保价值的方法,即mysql.default_usermysql.default_password. 在哪种情况下我们必须这样?

或者我怎样才能从别人那里获得我的价值观?

0 投票
2 回答
237 浏览

debian - .splintrc 预处理器指令中的空白 -D

我想splint在 debian 稳定的环境中运行我的一些资源。
我需要给出预处理器指令-DUINT16_T='unsigned short',因为我经常需要它。我想把它放在我的.splintrc文件中。
从命令行运行时,splint -DUINT16_T='unsigned short' mysource.c它运行良好。如果将此行移到我的.splintrc文件中

splint通话结果

有没有人有解决方案?(请不要使用别名)。

为了进一步讨论,我将提供一个 mnwe (minimal not working example) hello.c,这可能会有所帮助:

该命令gcc -DUINT16_T='unsigned short' hello.c运行良好 - 当然也可以splint -DUINT16_T='unsigned short' hello.c声称

但同样,我怎样才能将这个 DEFINE 包含在我的.splintrc?

0 投票
4 回答
6107 浏览

android - android:验证意图发送者的身份

我在一家生产多个应用程序的公司工作,并非所有这些应用程序都具有相同的签名或更多类似的签名,我们目前至少有 5-6 个应用程序证书。

我们试图创建一种机制,使同一设备上的所有公司的应用程序共享相同的,例如如果用户从市场应用程序A安装并且没有安装应用程序,则会生成一个新的ID,如果他现在安装了应用程序A,应用程序 B 应该与应用程序 A 具有相同的 id(id 只是生成的 UUID 类型 #4)等...

我们目前正在使用广播,只有获得我们许可的应用程序才能接收该广播并使用另一个广播发回 id(这次是明确的)。广播和响应受到我们的签名级别许可的保护,这当然无济于事,因为我们有多个签名。

我试图编写一个意图广播和恢复,它可以拥有自己的保护机制,不仅限于一个签名,而是几个签名,问题是像 Binder.getSenderUID() 这样的东西不适用于广播,我得到了我的自己的uid。看起来我无法获得我的 snder 的身份,除非他自己在意图中写下他的 id,这不是我可以信任的,因为它很容易被伪造。使用加密需要应用程序附带一个密钥,这再次不受保护,转向服务器进行验证需要太多时间,而且在移动设备上不能保证成功,因为不能 100% 确定周围有网络。

任何人都知道如何从一个应用程序获取验证\安全消息到另一个应用程序?(我所有的应用程序,但可能有不同的签名)。

0 投票
0 回答
326 浏览

c# - 如何防止 C# 中基于连接的 TOCTOU 问题?

我想防止 C# 中的 Junctions 出现 TOCTOU 问题。我正在从某些目录提供文件。这些目录可能是 SMB/CIFS 共享或任何文件系统(但很可能是 NTFS)的本地驱动器。

鉴于我对这个问题的理解,以下内容应该可以保护我免受它的影响:

  1. 打开文件使用File.Open(foo, FileMode.Open, FileAccess.Read, FileShare.Read)这应该可以防止任何东西修改文件或上面的目录结构。如果FileNotFoundException文件在File.Existscheck 和File.Open.

  2. 向上移动目录结构,检查每个文件夹是否不是联结,直到我到达根文件夹。

我不担心文件符号链接,因为文件符号链接需要提升的管理访问权限才能创建,并且如果攻击者已经对本地计算机具有提升的管理访问权限,他们很可能已经完全破坏了它。

我认为我不必担心 CIFS,因为我对此事的调查使我相信不可能在 CIFS 上创建符号链接,除非客户端支持 Unix 扩展(Windows 不支持)。

据我所知,Windows 支持的所有其他文件系统都不支持符号链接。

0 投票
1 回答
491 浏览

ruby - Ruby Sinatra 提交密码

我正在创建一个具有登录功能的小型 Sinatra 应用程序。这将是我第一次在 ruby​​ 中这样做,并且在从 html 表单发布密码时需要一些建议。什么是最好和最安全的方法来做到这一点。

非常感激任何的帮助。

谢谢亚历克斯

0 投票
1 回答
1111 浏览

android - 安全 API 密钥 Android

我目前正在开发一个使用 Google 的 Blogger API 的项目。前天(周六)有人攻击了我的应用程序并获取了 API Key,我每天访问帖子的限制是 100,000(100K/24 小时)。我在星期六达到了限制(我怀疑那些是使用我的 API 密钥进行的欺诈性点击,因为我只有大约 4K 客户使用该应用程序,我将 API 密钥嵌入到客户端代码中)。

之后,在五分钟内 API 限制再次达到(24 小时后)5K。所以我删除了 API 密钥并生成了一个新的。

我的问题是如何在客户端代码中保护我的新 API 密钥,以便攻击者无法访问 API 密钥或至少某种方法来间接使用客户端代码中的 API 密钥。

0 投票
1 回答
598 浏览

c# - 服务定位器 - 一种识别服务是否已注册的“安全”方式

我正在开发一个服务定位器系统,在该系统中服务可以注册并在代码库周围获得请求。

如果您有兴趣,请查看整个代码

我遇到的问题,我正在努力做到这一点,如果服务实例已经注册,注册失败,我这样做是这样的:

我没有做 alist.Contains(service)我想为什么不让每个服务都有一个HasRegistered- 当我注册一个服务时,我将它设置为 true。现在界面将如下所示:

现在我可以做if (service.HasRegistered) throw exception;而不是if (list.Contains(service) throw exception;

但问题是,这并不安全。该属性同时具有公共设置器和获取器,这意味着任何外人都可以进来做service.HasRegistered = false;

它应该设置为 true,仅在内部Register- 我该怎么做?- 如果我将设置器设为私有,我无法在任何地方设置它,如果我在NotifyHasBeenRegistered()内部提出IService相同的问题,外人可能会调用它并导致问题。

我怎样才能以安全的方式做我想做的事?

谢谢你的帮助。

0 投票
0 回答
584 浏览

scala - 安全编码指南

Java 编程语言版本 4.0的安全编码指南

scala有类似的东西吗?

如果没有,你能推荐 Scala 特定的吗?

0 投票
1 回答
1864 浏览

java - TOCTOU 中的竞态条件如何运作?

以下代码应该容易受到 TOCTOU 攻击:

我不明白的是,这种竞争条件将如何运作?假设有 2 个线程 T1 和 T2,其中 T1 有一组有效的参数并且应该通过检查,而 T2 是想要在类中设置无效值的黑客。

如果有 2 个线程在竞争并且这段代码是我们的关键部分,那么说 T1 运行通过了检查并进入睡眠状态。现在当 T2 开始运行时,它不会再次通过检查(并失败)吗?

0 投票
2 回答
1472 浏览

security - 游戏模组会造成缓冲区溢出漏洞吗?

我通常不在论坛上发帖,因为通常我可以使用谷歌找到我需要的任何答案。然而,我运行的每一次搜索都给了我非常具体的结果,例如对于特定游戏或系统已经存在的缓冲区溢出漏洞,这不是我需要的。

我有一个家庭网络,包括 Windows Server 2008 R2,我儿子想启动一个 Minecraft 服务器,当然我想让他完全访问,以便他可以学习。但是,我知道每个游戏都是“可修改的”,而且他在很多游戏中都使用了自定义地图等。

我担心的是,我将基于缺乏经验的编程在我的网络上制造安全风险。由于实际编写模块的人可能缺乏经验,让他能够在我的服务器上安装和创建模块可能会打开漏洞(在开放的 Minecraft 端口之外)?或者模组只是不能那样工作,我找不到我的问题的答案,因为它是迟钝的,没有人真正编写模组哈哈?