什麼是最好的方式告訴我的服務器端腳本,提交的表單或數據來自信任的來源或從我的網站? 上午服務器端的數據已經進行了很多審查,並認爲我可以在這個多與客戶方太網站黑客預防/最小化
AM一個PHP/MySQL的開發商
什麼是最好的方式告訴我的服務器端腳本,提交的表單或數據來自信任的來源或從我的網站? 上午服務器端的數據已經進行了很多審查,並認爲我可以在這個多與客戶方太網站黑客預防/最小化
AM一個PHP/MySQL的開發商
夥計們,感謝您的幫助,我欣賞這一切。通常我在談論客戶端安全性,即確保來自客戶端的數據來自原始來源。
一般SSL可能只是已經得到了答案,經過大量的瀏覽,我發現兩個網站,解決了這個問題,在一定程度上:aSSL和Jquery implementation
這樣,我的數據被固定到一個層面說90 %
你覺得呢?
要找出誰發佈的數據使用的用戶的IP改善:
$ip = $_SERVER['REMOTE_ADDR'];
echo "<b>IP Address= $ip</b>";
根據IP,您可以決定用戶是否信任。 (例如,如果你想只信任的IP地址的特殊範圍)
每當我讀張貼變量是在PHP我用這樣的過濾它們:
function check_string($string) {
// allowed chars: a-z,A-Z,0-9,-,_
if((preg_match('/^[a-zA-Z0-9\-\_]+$/',$string)))
return true;
return false;
}
它會過濾所有字符這不是az,AZ,0-9, - 或_並且增強了網站的安全性。如果你已經訪問到Web服務器:
禁用服務器橫幅(其中顯示操作系統和Apache的版本爲例),如果你有機會到Web服務器的配置。這些信息可能對黑客非常有用,並且您希望禁用可能以任何方式幫助他們的所有內容;)
阻止目錄列表(例如使用.htaccess文件)。一個簡單的例子是:
選項所有-Indexes
與一個受限用戶帳戶運行網絡服務器(最好是執行chroot用戶也一樣)在MySQL查詢
使用mysql_real_escape_string並在html文章中使用htmlentities。
例子:
錯誤:
<?php
if($_SERVER['REQUEST_METHOD'] == "post"){
echo $_POST['hai'];
}
?>
權:
<?php
if($_SERVER['REQUEST_METHOD'] == "post"){
echo htmlentities($_POST['hai']);
}
?>
$ _ POST還可以通過$ _GET
錯誤:
<?php
$query = "SELECT * FROM table WHERE msg = '". $_GET['hai'] ."'";
?>
權:
<?php
$query = "SELECT * FROM table WHERE msg = '". mysql_real_escape_string($_GET['hai']) ."'";
?>
而且不要忘記,當你得到的東西出來的MySQL表的使用ヶ輛...
問候
這似乎沒有解決「提交的表單或數據是來自可信來源還是來自我的網站」的問題。專業提示,但。 – bzlm 2011-02-13 19:59:20
我一直使用的處理這些問題的類,它將處理服務器/客戶端,並確保任何輸入都來自服務器本身。它會驗證並確保它沒有被賦予特殊字符。
讓我知道是否有幫助,但前一陣子幫助了我。 :)
我認爲最好的選擇是添加一個數字簽名的請求,即使是一個簡單的。
例如,您的站點或受信任的源添加計算它的請求的SHA校驗和後,添加一個祕密「鹽」(不發送)。服務器獲取數據,添加相同的鹽並計算SHA簽名,如果SHA匹配,則源知道該祕密並且您可以信任該內容。
我想你的問題意味着CSRF ...只需生成並添加驗證令牌。
許多框架可以爲你管理這些。
可能重複的[PHP表單令牌](http://stackoverflow.com/questions/2034281/php-form-tokens) – bzlm 2011-02-13 19:34:05
夥計我的問題是「在服務器接收到的惡意天氣數據來自有效來源」而不是「檢查數據的正確形式」 – Smith 2011-02-14 09:13:44