2

このクエリの SQL インジェクションを安全にするにはどうすればよいですか? JRequest::getVar は、渡されたパラメータが SQL インジェクションに対して安全であることを保証しますか?

$product_id = JRequest::getVar('product_id')
$db = JFactory::getDBO();
$query = " select * from #__products where product_id=".$product_id."; ";       
$db->setQuery($query);
$data = $db->loadObjectList();
return $data[0];
4

2 に答える 2

3

@Sudhirの答えの延長として。

JRequestJoomla!以来減価償却されています。1.7であり、徐々に削除されています。たとえば、Joomla3.0での潜在的な下位互換性の問題。コンポーネントを維持する場合は、古いスタイルのJRequest呼び出しをJInputに移行することをお勧めします。

于 2012-08-17T05:24:44.813 に答える
2

はい、getVar関数を使用してリクエスト変数にアクセスすると、他の場所(SQLクエリなど)で使用される前に、すべてのユーザーデータが確実にフィルタリングされます。 JRequestクラスのgetVarメソッドは、(明示的に指定されていない限り)入力を自動的に除外します。

データベースに挿入する前に、引用符を使用して文字列をエスケープすることもできます

于 2012-08-17T04:20:29.720 に答える