1

JRequest::getVar() 関数が sql インジェクションや XSS を防ぐのに十分なのか、それとも joomla サイトでの XSS または sql インジェクションを防ぐために他のものを使用する方が良いのか知りたいです。

4

1 に答える 1

7

Joomla 2.5+ 用に開発していると仮定すると、JRequest廃止されたため、もう使用することは想定されていません。

リクエスト変数を取得する新しい方法は次のとおりです。

$jinput = JFactory::getApplication()->input;
// expecting integer, default 0
$user_id = $jinput->post->get('user_id', 0, 'INT');
// expecting string, default empty string
$user_name = $jinput->post->get('user_name', '', 'STRING')

の 3 番目のパラメーター$jinputはフィルターです。たとえば、整数を返したい場合は、適切なフィルターを設定します。

JInputを使用するには、をmagic quotesオフにする必要があることに注意してください。

SQLインジェクションから保護するには、使用します

$db = JFactory::getDbo();
// $value is not safe
$value = $db->quote($value);

そしてXSSに対して

$filter = JFilterInput::getInstance();
// $value is not safe
$value = $filter->clean($value);

あなたのコメントを読んだ後、「悪いキャラクター」自体は存在しないことを付け加えたいと思います. また、SQL インジェクションまたは xss に対するフィルタリングは非常に異なります。フィルタリングとエスケープについての理解を深めるには、The Great Escapism を参照してください。

于 2013-02-27T13:56:45.280 に答える