2

我正在开发一个 joomla 组件,我想知道通过表单提交 POST 和 GET 数据的最佳安全方式是什么。

<form action="index.php?<?php echo JUtility::getToken()?>=1" method="post" name="adminForm">    
    <input type="hidden" name="option" value="<?php echo OPTIOIN_NAME; ?>" />
    <input type="hidden" name="task" value="save" />
    <input type="hidden" name="controller" value="mycontroller" />
    <input type="hidden" name="id" value="<?php echo $this->my_data->id; ?>" />


    <?php echo JHTML::_('form.token');?>

    //my code is here

</form>

模型.php

function getPostData(){

     if (!JRequest::checkToken('REQUEST')) {
         // return 403 error
         JError::raiseError(403, JText::_('ALERTNOAUTH'));
         // belt and braces approach to guarantee the script stops
         jexit('Invalid Token');
  }

     $this->_data->id = JRequest::getVar('id', 0, 'POST', 'INT');
     //....


}

这是我发送数据的方式,我不知道这是不是一个好方法。请帮忙。

4

1 回答 1

2

我认为您使用的这种方法是可以的。只有一件事:如果您从 POST 获取数据,我猜您的令牌也将在 POST 中可用,因此您对 JRequest::checkToken( 'REQUEST' ) 的调用可以更改为 JRequest::checkToken( 'post' )。另一个重要的事情是,如果您使用请求中的 vars 手动制作数据库查询,您应该始终使用 $db->Quote() 方法。最后,正如 Thilo 所说,您应该将 HTTPS 用于支付等“关键”交易。

我希望它有帮助!

于 2011-11-24T07:41:11.743 回答