2011-02-13 21 views
0

什么是最好的方式告诉我的服务器端脚本,提交的表单或数据来自信任的来源或从我的网站? 上午服务器端的数据已经进行了很多审查,并认为我可以在这个多与客户方太网站黑客预防/最小化

AM一个PHP/MySQL的开发商

+0

可能重复的[PHP表单令牌](http://stackoverflow.com/questions/2034281/php-form-tokens) – bzlm 2011-02-13 19:34:05

+0

伙计我的问题是“在服务器接收到的恶意天气数据来自有效来源”而不是“检查数据的正确形式” – Smith 2011-02-14 09:13:44

回答

0

伙计们,感谢您的帮助,我欣赏这一切。通常我在谈论客户端安全性,即确保来自客户端的数据来自原始来源。

一般SSL可能只是已经得到了答案,经过大量的浏览,我发现两个网站,解决了这个问题,在一定程度上:aSSLJquery implementation

这样,我的数据被固定到一个层面说90 %

你觉得呢?

1

要找出谁发布的数据使用的用户的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查询

1

使用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表的使用ヶ辆...

问候

+0

这似乎没有解决“提交的表单或数据是来自可信来源还是来自我的网站”的问题。专业提示,但。 – bzlm 2011-02-13 19:59:20

0

我一直使用的处理这些问题的类,它将处理服务器/客户端,并确保任何输入都来自服务器本身。它会验证并确保它没有被赋予特殊字符。

http://validformbuilder.org/

让我知道是否有帮助,但前一阵子帮助了我。 :)

0

我认为最好的选择是添加一个数字签名的请求,即使是一个简单的。

例如,您的站点或受信任的源添加计算它的请求的SHA校验和后,添加一个秘密“盐”(不发送)。服务器获取数据,添加相同的盐并计算SHA签名,如果SHA匹配,则源知道该秘密并且您可以信任该内容。

0

我想你的问题意味着CSRF ...只需生成并添加验证令牌。

许多框架可以为你管理这些。