[英]How to avoid “PHP injection”
我有這個腳本
<?php $number = %value%; ?>
%value%標記將被用戶輸入的DB上的值替換。
我擔心的是有人輸入的內容如下:
1; echo phpinfo()
替換的結果將是:
<?php $number = 1; echo phpinfo(); ?>
這顯然是一種安全風險。
是否有一個函數來逃避php腳本字符或我可以使用的東西?
提前致謝。
這是我正在研究的CMS上的工具,通常工具生成添加到某些PHP文件的HTML代碼。
在這種情況下,此工具從RSS通道生成HTML結構。 我們要求用戶輸入RSS URL和要顯示的提要數量,我們將這些值替換為PHP腳本並使用它們來獲取提要並以HTML結構顯示它們。
像這樣:
<?php
$url = "URL"; //comes from DB
$number = N; //comes from DB
$feeds = getFeeds($url, $number);
...
?>
你上面描述的機制是有缺陷的。 PHP就是這樣不行。 不會執行任何用戶輸入(或更准確地說,由PHP解釋),除非:
eval()
調用運行它 你應該擔心的是SQL注入,這是一個非常不同的東西。
如果你指的是一個類似於子彈#2的場景,你很可能從設計角度做一些非常錯誤的事情,你應該重新思考你的方法。
正如code_burgar所提到的......這種設計是完全有缺陷的。 應該沒有理由動態構建服務器執行的文件。 您應該從db中提取記錄集,循環遍歷它並為每條記錄執行getFeeds()函數。 這樣做不會執行任何db提供的數據,除非..再次作為cod_burgar說..你使用eval()函數。
通常,您希望在任何程序中清理所有用戶提供的輸入。 EG:如果要求一個5位數字,在將數據分配給變量之前,確認它實際上是一個整數,並確保它只有5位數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.