禁用购物车输入过滤的Magento核心修改的效果


Effects of a Magento core modification that disables cart input filtering?

我目前正在开发一个已经修改过的magento版本(1.6.1版)。以前的开发人员已经修改了应用程序/核心本身,如果我升级到1.7怎么办?它会恢复原始的应用程序/核心,对吗?(因为我知道每个mod都应该放在应用程序/本地下)

然后我注意到,通过在电子商务上运行diff和一个干净的1.6.1安装,开发人员已经应用了这个修改(标有"<"的行是原始内容,标有">"的是编辑的内容)

diff app/code/core/Mage/Checkout/controllers/CartController.php
169c169,170
<                 $params['qty'] = $filter->filter($params['qty']);
---
>                 #$params['qty'] = $filter->filter($params['qty']);
>                 $params['qty'] = $params['qty'];
311c312,313
<                 $params['qty'] = $filter->filter($params['qty']);
---
>                 #$params['qty'] = $filter->filter($params['qty']);
>                 $params['qty'] = $params['qty'];
383c385,386
<                         $cartData[$index]['qty'] = $filter->filter(trim($data['qty']));
---
>                         //$cartData[$index]['qty'] = $filter->filter(trim($data['qty']));
>                         $cartData[$index]['qty'] = $data['qty'];

正如您可能注意到的,他们禁用了$filter->过滤器和修剪。

这不是将电子存储暴露给SQLInjections或类似的任意代码执行吗在将这些数据存储在数据库中之前,magento是否执行了另一项检查?

以前的开发人员删除的过滤函数不用于过滤SQL注入或其他安全风险的输入。它们用于将本地化的输入转换为标准表单,无论语言环境如何,都可以进行处理。以下是第一个差异的扩展上下文:

$filter = new Zend_Filter_LocalizedToNormalized(
    array('locale' => Mage::app()->getLocale()->getLocaleCode())
);
$params['qty'] = $filter->filter($params['qty']);

有关LocalizedToNormal功能的详细信息,请参阅Zend文档。

Magento有内置的保护措施,通过使用标准数据库类来防止SQL注入,这些类在构造查询之前过滤所有数据。该逻辑位于Mage_Core _Model_Resource_*类以及存储在/lib/Zend中的Zend库中。只要以前的开发人员没有修改这些类,就不应该有额外的SQL风险。

当然,跨站点脚本总是一个潜在的问题,但风险通常更多地存在于视图层(PHTML&Block类),而不是控制器或模型层。