2013-10-29 50 views
0

在寻找如何保护网站的可能方法时,我发现了很多信息。通过这些信息需要几个月的时间。什么是短规则(要记住)保持(PHP)代码安全?

所以,问题是:什么是简短的规则(要记住)保持(PHP)代码的安全?

使用的网站,黑客会危害:

使用输入表单中输入的东西时,
  1. ;
  2. 使用输入表单上传内容时;
  3. 在地址栏中输入内容时。

据我所知,没有其他的方法(只使用网站)黑客可能会造成伤害。

1)使用输入表单与用户输入相关的规则。

1.1。在mysql中记录。 PDO准备的报表如: INSERT INTO TableName (Column1, Column2, Column3) VALUES (???)。因此,如果任何?将包含删除数据库的代码,则?的内容将被记录在mysql中并且不会被执行。如果代码如INSERT INTO TableName (Column1, Column2, Column3) VALUES ($variable, $variable, $variable),则可以执行此类代码。

1.2。从mysql显示为html记录并显示用户的输入。 对于字符串必须使用回波htmlspecialchars($variable) 对于数组必须使用这样https://stackoverflow.com/a/2003212/2465936

function filter(&$array) { 
    $array = htmlspecialchars($array, ENT_QUOTES, 'UTF-8'); 
} 
array_walk_recursive($array, "filter"); 
echo '<pre>'; 
print_r($array); 
echo '</pre>'; 

1.3。 JSON(Javascript)输出。例如,我有回音json_encode($bad_content);如何逃避它?用echo json_encode(JSONObject.escape ($bad_content))?请指教。

2)使用输入表单与上传相关的规则。目前在我的代码中,您看到了$data = new Spreadsheet_Excel_Reader(($_FILES['file']['tmp_name']), false, false)。目前,我不知道该怎么做。如果我想在MySQL中记录Excel或CSV文件的内容,那么没关系,我使用PDO准备好的语句。但是有必要清理文件名?我试图上传一个名为header('Location: http://www.google.com');的CSV文件。所有数据按预期导入。请,一个建议是否有必要消毒/逃脱的东西。如果是,那么如何?

3)规则,与在客户端浏览器的地址栏中输入内容有关。 如何避免与URL操作相关的问题?

例如,键入 http://www.mywebsite.com/bookreports.asp?reportID=21'; drop table myTablename--Not Found The requested URL /bookreports.php was not found on this server.并没有什么事情发生

怎样做才能避免可能出现的问题,如果黑客在地址栏类型意想不到的事情?我需要检查每个文件的URL吗? 从哪里危害到这种情况?好的,用户可以输入密码保护页的网址。但在密码保护页面中,我检查浏览器会话ID并与服务器会话ID进行比较。

+0

这里有很多问题:C – MackieeE

+0

您的问题是广泛的!编程确实需要您的一些学习和阅读。学习捷径并不是最好的开始。 – StBlade

+0

我只想写一些简短的规则作为参考。假设记住并遵循主要规则是有用的。 – user2465936

回答

1

重要的是请求不能通过URL伪造。使用正确的工具,可以轻松设置POST参数以及请求的标题,包括但不限于Cookie。

+0

如何避免在这种情况下可能出现的问题?据我所知,相同。对于mysql,pdo准备好了,用于html输出'htmlspecialchars'? – user2465936

+0

这绝对取决于你想要做什么。在某些情况下,将预期输入路由到某些功能会很重要,并且会为意外输入返回错误。 例如,如果您正在访问用户输入的文件。如果你通过一个'index.php'来路由你的所有请求,那么你必须确保你不要像'file_get_contents($ _ GET ['filename'])''这样做,而是确保首先检查路径和文件结尾是否符合正则表达式,不允许使用'../'移动目录。 – MildlySerious