我正在开发一个joomla组件,我想知道通过表单提交POST和获取数据的最佳安全方式是什么。
<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>
model.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');
//....
}
这是我发送数据的方式,我不知道这是一个好方法。请帮助。
答案 0 :(得分:2)
我认为你使用的方法还可以。只有一件事:如果您从POST获取数据,我猜您的令牌也将在POST中可用,因此您对JRequest :: checkToken('REQUEST')的调用可以更改为JRequest :: checkToken('post') )。 另一个重要的事情是,如果手动制作数据库使用来自请求的变量进行查询,则应始终使用$ db-&gt; Quote()方法。 最后,正如Thilo所说,您应该使用HTTPS进行“关键”交易,例如付款。
我希望它有所帮助!