伺服器執行Linux 命令如何避免前端參數攻擊?
舉例
PHP後端某個伺服器想要使用 linux 某個套件,想要字串轉成 excel xlsx 檔案
$ txtToXlsx '{0}'
前端可以輸入
id , name
1 , xxx1
2 , xxx2
伺服器系統可以自動將字串轉換為 excel
但我想到假如前端使用者加上'
,不就可以自己組合命令
甚至可以攻擊、控制伺服器?
請問我要搜尋甚麼關鍵字或是方式才能避免這種攻擊呢?
搜尋1 : 搜尋google發現都是 SQL注入的防治,像是網站安全防護—該如何防止SQL注入攻擊? - 每日頭條kknews.cc › 科技,但我想要的是linux命令
置換、對照表
盡量不要用EVAL、EXEC、SYSTEM.........可以執行外部程式的功能,就算非用不可,也不要以sudo或root的權限跑
感謝 japhenchen 大神
置換,如把所有不正常字元(非英數空白等合法輸入)全部置換成無破壞力的_
免費的EXCEL在VB跟C#有EPPLUS,在PHP有PHPExcel,在PYTHON也有Openyxl,真的不必要動用到.........呃,Linux系統內建了什麼Excel檔建立工具?
https://github.com/PHPOffice/PhpSpreadsheet PHPExcel好像改朝換代了
直接使用語言內建的方法 不要自己處理
https://www.php.net/manual/en/function.escapeshellarg.php
自己跳一跳都會跳出洞 不要亂學
網路上的方法一堆錯的
<?php
system('ls '.escapeshellarg($dir));
?>