T上西北

资源(续)

去年已经写过一篇名叫资源的文章,那时是我接手一个新团队不久时写的,里面描述了一些挑战和计划。

时至今日,已经有几个月了,在这几个月里,感觉团队很大,每个人都有明星的变化。表现为团队的resource情况不再紧张,可以将项目承担下来,不像以前来了一个新需求,就说没资源。现在打通各个team之间壁垒,将这些资源共享,所以资源问题得以解决。里面的难点在于如何改变每个team的manager的想法,以及各组成员的意识。这次改变给其他team带来信心,如销售,产品,运维等,同时也改善了team的reputation。

因为这些改变,又带了一些新的项目,基本上team非常乐意去接受这些新的挑战。同时我们正在采取一系列的措施将产品质量保证好,目前正在进行中,看样子已经对部分人产生积极影响。

同时,打破旧有的思维定式,迎接新的思维方法。让team对整个产品,技术等 有明确的认识。工作方法也有改进。

还有,就是唯人才是用,谁做的好,思想转变的好,又有潜力,总能找到一些机会给他们。同时也兼顾team 成员的兴趣爱好,去分配任务,争取做到双赢。

团队目前良性的运行,让自己觉得满意。

Web安全-隐藏Web Server信息

这是一个非常容易忽略的点。

Web Server的信息包括:

  • Web Server的类型,常见的如Tomcat, Apache Httpd,Ngnix等。
  • 版本信息。即web server的版本信息。

为什么要隐藏这些信息呢?原因很简单,我们非常容易获取web server的软件信息。那么对于攻击者可以做什么呢?我们知道每种软件都是有漏洞的,尤其是对于这些著名的软件。如果出现安全性漏洞,一般都是公开的,而且有些漏洞有详细的复现步骤。

其他web server不在这里例举了。

所以,当攻击者知道web server信息,又加上这对每个漏洞的详细解释,攻击就简单多了。

那么如何隐藏web 容器信息呢?一般来说是可以通过配置解决的。

Apache Tomcat

可以在server.xml里的Connectorserver属性解决。参考https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

Apache HTTPd
security.conf里的ServerSignature Off

Web安全- Command Injection

Command Injection,是指Web App调用系统命令去实现某些功能,同时因为不安全的web请求数据(例如Form,Cookie,HTTP header等)利用该功能造成一些安全影响。

实例

下面的例子便于理解。

本例子来源https://www.owasp.org/index.php/Command_Injection

下面的PHP代码会引起Command Injection:

<?php
print("Please specify the name of the file to delete");
print("<p>");
$file=$_GET['filename'];
system("rm $file");
?>

我们看看请求和返回。

请求

http://127.0.0.1/delete.php?filename=bob.txt;id

响应

Please specify the name of the file to delete

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

我们可以看到,如果执行web的function id足够大的话,是极有可能把不应该的数据删除了,例如filename为/,同时我们也可以看到该id所在的group。

解决方案

可以尽量使用API。例如上面要删除一个文件,可以使用php语言的api去删除文件,而不是调用OS的rm命令。

如果没有相关的API去调用,一定要调用这些command,务必做好命令的验证。就个人经验看,验证允许的command比验证不允许的command要简单一些。