iT邦幫忙

0

伺服器執行Linux 命令如何避免前端參數攻擊?

伺服器執行Linux 命令如何避免前端參數攻擊?

舉例

PHP後端某個伺服器想要使用 linux 某個套件,想要字串轉成 excel xlsx 檔案

$ txtToXlsx '{0}' 

前端可以輸入

id , name
1	, xxx1
2	, xxx2

伺服器系統可以自動將字串轉換為 excel

但我想到假如前端使用者加上',不就可以自己組合命令

甚至可以攻擊、控制伺服器?

請問我要搜尋甚麼關鍵字或是方式才能避免這種攻擊呢?


搜尋1 : 搜尋google發現都是 SQL注入的防治,像是網站安全防護—該如何防止SQL注入攻擊? - 每日頭條kknews.cc › 科技,但我想要的是linux命令

光php去跑server的命令。本身就已經是一個大bug。
不要再為這個bug去拿更大的國防布來蓋。蓋不完的。
感謝
他們說這個工具很好用
這樣看起來挺麻煩的 orz
php有很多excel的套件可以直接用。並不需要用server 命令處理。

2 個回答

1
japhenchen
iT邦高手 1 級 ‧ 2020-09-17 12:14:55
最佳解答

置換、對照表

盡量不要用EVAL、EXEC、SYSTEM.........可以執行外部程式的功能,就算非用不可,也不要以sudo或root的權限跑

看更多先前的回應...收起先前的回應...

感謝 japhenchen 大神

icekimo iT邦新手 4 級 ‧ 2020-09-17 13:20:30 檢舉

置換,如把所有不正常字元(非英數空白等合法輸入)全部置換成無破壞力的_

免費的EXCEL在VB跟C#有EPPLUS,在PHP有PHPExcel,在PYTHON也有Openyxl,真的不必要動用到.........呃,Linux系統內建了什麼Excel檔建立工具?

fillano iT邦超人 1 級 ‧ 2020-09-17 13:37:07 檢舉

https://github.com/PHPOffice/PhpSpreadsheet PHPExcel好像改朝換代了

所有不正常字元(非英數空白等合法輸入)全部置換成無破壞力的

請問有前人的清單資料嗎? 擔心自己想的有漏 >"<

基本上只要空白whitespace、分號 ; 引號 ' " 斜線反斜線 \ / 代換去除掉,絕大部份用字串做長指令的可能性就少了99%了,除非有人有辦法找到三個字毀系統的事...

sudo rm / -rf

那個糾正一下。eval不算是運行server命令或外部程式的函數。
雖然,它的確也最好不要用。

eval($_GET['script']);

大家一起來幫你寫程式。

17
seadog007
iT邦新手 5 級 ‧ 2020-09-17 14:52:40

直接使用語言內建的方法 不要自己處理
https://www.php.net/manual/en/function.escapeshellarg.php
自己跳一跳都會跳出洞 不要亂學
網路上的方法一堆錯的

<?php
system('ls '.escapeshellarg($dir));
?>

這是我在找的!! 感謝您!

seadog007 iT邦新手 5 級 ‧ 2020-09-17 15:05:41 檢舉

唉 一堆人都亂教 網路上各種洞都是這樣出來的

\嗨爆教我/

我要發表回答

立即登入回答