2011-11-24 66 views
2

我正在開發一個joomla組件,我想知道什麼是通過表單提交發布和獲取數據的最安全的方法。什麼是在Joomla 1.7中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> 

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

你的安全意味着什麼?你想防止什麼樣的攻擊? – Thilo

+2

嗯,我正在發送信用卡信息,所以我想以更安全的方式發送信息。我還不是joomla的新手:)並且不知道我可能會面對什麼樣的攻擊。 – Sara

+0

有關信用卡的詳細信息,請使用HTTPS。這保證了數據的傳輸。然後你需要保護你的數據庫以保證數據的安全。但這超出了這個問題的範圍。 – Thilo

回答

2

我認爲你使用這種方法是可以的。只是一件事:如果你從POST獲得數據,我猜你的令牌也可以在POST中使用,所以你對JRequest :: checkToken('REQUEST')的調用可以改爲JRequest :: checkToken('post' )。 另一個重要的事情是,如果您使用請求中的變量手工創建數據庫查詢,則應始終使用$ db-> Quote()方法。 最後,正如Thilo所言,您應該對支付等「關鍵」交易使用HTTPS。

我希望它有幫助!

+0

感謝您的幫助確實幫助我理解了這一點。 – Sara

相關問題