2015-03-19 55 views
0

Javascript是一種客戶端語言,因此可以讀取和複製腳本。遠程javascript-ajax-php攻擊

現在考慮這個例子。

<html> 
<head> 
<title>title</title> 
<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
</head> 
<body> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#user').blur(function() { 
      var dataString = 'user=' + user; 
      $.ajax({ 
       type: "POST", 
       url: "insertUser.php", 
       data: dataString 
      } 
     } 
    } 
    </script> 
    <label for='user' >User:</label> 
    <input id="user" type="text" /> 
</body> 

insertUser.php

​​

可能有人寫在他的本地主機的腳本使用的路徑,insertUser.php將自己的數據?無論如何解決這個問題?

+0

任何插入用戶提供的數據的代碼都應該被認證,否則惡意的人可以在幾分鐘內用垃圾填滿你的數據庫 – Steve 2015-03-19 11:20:41

+1

絕對是的。任何接收來自網絡輸入的腳本 - 不僅僅是AJAX - *必須*將這些數據視爲可能包含惡意數據或以惡意方式使用。消毒和檢查一切。 – 2015-03-19 11:22:13

回答

0

有人可以在他的localhost中編寫一個腳本來插入他自己的數據,使用insertUser.php的路徑嗎?

是的,任何人都可以使用的路徑,insertUser.php

無論如何要解決這個發佈自己的數據?

1.檢查請求的類型是阿賈克斯的,並從您的域名

if(($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') && ($_SERVER['HTTP_REFERER']=="http://yourdomain/url")) { 
//Is ajax call 
} 


2. Cross-origin policy正在添加;這是否認其他領域的帖子。

3.生成令牌並驗證服務器端的令牌。

1

是的,任何人都可以將任何數據發送到您的insertUser.php

關於保護,依賴於用例。 Chceck誰發送數據,授權應該被授權的任何請求等。

最好的做法是處理來自外部的任何數據(不管它們來自哪裏),就好像它們是最危險和惡意的。

0

有很多方法可以阻止用戶提供的惡意數據插入數據庫。

關於你的情況,你可以做以下步驟:

  1. 檢查從您的服務器生成的傳入Ajax調用。
  2. 通過了在應用程序中添加CSRF
  3. 始終清潔插入數據到數據庫被稱爲SQL Injection,你可以閱讀有關SQL injection in OWSAP
  4. 始終使用ヶ輛()Search for htmlentities PHP函數在屏幕上顯示輸出

謝謝,我希望這一定能幫助你理解安全。