2015-08-31 36 views
0

我正在創建一個網站,我嘗試尊重模型,視圖,控制器體系結構。 在HTML視圖部分有時候我打電話PHP函數,如表格波紋管:把html函數放在html表單中可以安全嗎?

<html> 
    <form role="form" action="#" method="POST"> 
    <div class="col-sm-6"> 
    <?php $workinghours->isCheckedWH($db, 'workinghours', $id, 'day', 'open', 'closed', 'check_list[]'); ?> 
    </div> 


<div class="row"> 
    <div class="col-sm-offset-1 col-sm-8"> 
    <br> 
    <button type="submit" class="btn btn-default" name="modify_wh" value="modify">Modify</button> 
    </form> 
    </html> 

是否有這樣做的安全性方面的風險?有人可以修改函數中的參數來使事情崩潰。如果是的話,最好的解決方案是防止它呢?

非常感謝。

+1

這很好。不會有任何安全問題,除非你做的事情就像做查詢而不逃避輸入或類似的事情。 – Andrew

+0

PHP在服務器端執行不會有問題。沒有人甚至可以查看PHP。 @andrew是正確的,除非你在沒有安全度量的情況下獲取quires而不是100%安全。例如 – Farhan

回答

0

用戶不能「看到」或崩潰你的功能,如服務器響應競爭HTML(或其他格式:XML,TEXT,...)。

用戶可能會崩潰你的代碼,例如,如果您使用的要求未經過濾的數據:

$workinghours->isCheckedWH($db, 'workinghours', $_GET['id'], 'day', 'open', 'closed', 'check_list[]'); 
+0

,例如,沒有人可以將html修改爲:$ workinghours-> isCheckedWH($ db,'workinghours','xxx','open','closed','check_list []');數據庫中存在xxx wouldent,從而導致崩潰?或者可以添加一個php函數能夠理解的參數?我很抱歉,如果答案已經回答了這個問題,但我對這一切都很陌生! – michltm

+0

@michltm F.e.參數** xxx **可以是一些查詢或括號,並且如果在您的函數isCheckedWH中使用它,而沒有過濾或檢查,它可能會「破壞」您的邏輯(SQL注入或XSS,或其他可能) –

+0

好的謝謝,我現在明白了! – michltm

0

你的PHP代碼將永遠不會到達客戶端,因爲它解釋在服務器上。以這種方式顯示數據在安全性方面並不成問題,但由於可能的代碼注入(例如​​),您在接受用戶輸入時應該小心。

您應該經常清理和驗證用戶輸入。已經有a post, that describes this in a bit more detail

+0

其中一個不會用'htmlspecialchars()'清理輸入。您在輸出中呈現html和js代碼毫無害處,但您不會對輸入做任何事情。 –

+0

@CharlotteDunois:正確,但要小心輸出給js。 'htmlspecialchars'不適合這個。這裏你需要'\ x62'格式(十六進制實體編碼)。 – SilverlightFox

相關問題