shuimugan
2019-08-21 22:45:24 +08:00
你提到的"因为熟悉,你知道那里怎么运行的"和安全问题其实没有很大的关联,安全问题主要是和人员的安全能力以及安全意识有很大的关系.
我就用回 PHP 举例,"根据用户输入的 url 发起请求"这个需求,不用轮子,只用内置 curl 函数,你可能觉得几行代码写出来的,然后呢?
对于这个 url 的检测,问题可多了.
先从协议开始,如果没校验协议,dict 协议可以用来探测内网无密码 redis,而 gopher 则可以构造出 FastCGI 协议,攻击 PHP-FPM,使其执行任意代码.
当 url 的域名指向内网的时候,则可以探测内网无保护的 http 服务,比如探测 Elasticsearch.
当你尝试先校验一下域名是否指向内网的时候,DNS-rebinding 了解一下?
在你没有安全技能和安全意识的情况下,就算你对自己的代码很熟悉,你也完全不知道漏洞在哪里.而当你有安全技能和安全意识的时候,你在开发对应功能的代码时,你就会自然而然地做很多防御手法,以及 review 你依赖的轮子它的内部实现.
最后,OpenRASP 的实现方式可以了解一下,通过和 runtime 结合的形式,对于函数的入参做检测,可以在 runtime 层做防御