我通常非常有资源自己寻找信息,但是当谈到这个问题时,那里的东西确实令人生畏.我收到了一些信息超载.

我已经找到了几十篇关于个人安全主题的文章,但我无法理解大局以及它们在实践中如何融合在一起.

我需要看一个鸟瞰路线图.拿这个假设的例子:

A Simple Hypothetical “Comments” Section:

  • Sign up: create a password/username combo that is to be stored safely in a MySQL table.

  • Log in.

  • Leave a comment.

这个最基本的案例将遵循什么是“安全路线图”?

这个星球上的每本教程和PHP书都使用MysqL扩展没有帮助,如果我理解正确的话,这是一个坏主意吗?

A.总的来说……

>我假设程序员不是服务器管理员,并且服务器管理员或多或少知道默认情况下如何正确安全地配置LAMP.

当然,如果有必要,程序员可以覆盖位于Web根目录中的自定义PHP.ini文件中的大多数PHP设置.
>使用MVC框架.

我使用CakePHP.该框架本身在很大程度上确保了基本健全和安全的编码实践.

B.收到的数据……

>在以编程方式操作数据之前,清理并验证$_GET,$_POST,$_COOKIE和$_REQUEST中包含的所有数据.
> sql注入

定义:代码注入技术,利用应用程序的数据库层中发生的安全漏洞.当用户输入被错误地过滤为嵌入在sql语句中的字符串文字转义字符或用户输入没有强类型并因此意外执行时,存在漏洞.

预防:使用MysqLi或PDO等库进行参数化查询.请参阅OWASP SQL Injection cheat sheet(不建议使用字符串转义函数,如MysqL_real_escape_string)
>跨站点脚本(XSS)

定义:Web应用程序中常见的安全漏洞,允许恶意Web用户将代码注入其他用户查看的Web页面.这种代码的示例包括客户端脚本(即,JavaScript).

预防:依赖于上下文的输出转义和编码.见OWASP XSS prevention cheat sheet.

C.浏览器请求……

>跨站点请求伪造(CSRF)

定义:网站的恶意利用类型,从而从网站信任的用户传输未经授权的命令.与利用用户对特定站点的信任的跨站点脚本(XSS)不同,CSRF利用站点在用户浏览器中的信任.

预防:通常在浏览器会话启动时生成唯一的“令牌”.在所有POST和GET请求中传递令牌.在POST / GET操作之后,检查会话中是否存在令牌,然后确认POST / GET发送的令牌与会话中存储的令牌相同. (像CakePHP这样的MVC框架使得在整个应用程序中统一实现相对容易.)

D.会议……

>终止会话时销毁会话数据

会话完成后(“注销”),销毁其数据,不要只清除cookie(恶意用户只能重新启动cookie并再次使用会话).通过将其分配给空数组来取消设置$_SESSION中的所有索引.
>将会话存储为Web根目录或数据库中的文件

在服务器上保存会话的默认路径可能被劫持 – 尤其是在共享托管环境中.

E.密码……

>强制选择强密码

>密码中需要数字,符号,大写和小写字母
>密码长度应为12到14个字符左右

>哈希和盐所有密码

不要使用sha1(),md5()或hash()来哈希密码.它们不是为此而设计的.您将需要使用像bcrypt或PBDFK2这样的函数.有some really good suggestions on this question.你的盐值应该是完全随机的,并存储在数据库中(这不是一个秘密).一个额外的秘密值(通常称为“胡椒”)可以存储在您的应用程序中,并在使用bcrypt之前预先设置密码,但目前尚不清楚它真正增加了多少安全性.

F.在位于web根目录的自定义PHP.ini中…

>禁用register_globals

预防:register_globals =关闭
>禁用魔法引号

预防:magic_quotes_gpc =关闭
>禁用错误报告

预防:display_errors =关闭
>启用错误日志记录并将日志文件保存到Web根目录以上的目录中

预防:

log_errors = On; 
ignore_repeated_errors = On; 
html_errors = Off; 
error_log = /path/above/webroot/logs/PHP_error_log

>将会话数据存储在Web根目录上的目录中

预防:session.save_path = / path / above / webroot / sessions

G.在位于Web根目录的.htaccess文件中…

>在站点范围内禁用目录列表

预防:选项 – 索引

H.有价值/敏感文件……

>通过在Web根目录上存储此类文件来防止未经授权的访问/下载

这包括站点管理/仅限成员的部分和站点/数据库配置文件!
>使用中间脚本以内联方式或作为附件提供文件
>保持脚本(wordpress,PHPMyAdmin等)的更新.
>只允许在使用PHPMyAdmin时访问它.这可以防止人们在您的安装上使用零日攻击.

I.上传的文件……

>在将其用于任何类型的数据操作之前,验证存储在$_FILES中的文件名
>请注意,提供的mime类型可能是欺骗或其他错误
>将所有用户上传的文件移动到web root上面的目录中!
>不要使用include()执行/提供上传的文件
>尝试不提供内容类型为“application / octet-stream”,“application / unkNown”或“plain / text”的文件

J.杂项……

>开发人员在开发站点/应用程序期间创建和使用Web根目录中的所有“实用程序”文件/程序,这些文件/程序无意或未被未来站点用户访问,或者存在某种安全风险,应该在网站上线时删除.

例如,这包括PHPinfo.PHP文件(打印PHPinfo()结果的文件),数据库实用程序脚本等.

PHP / MySQL形式:转义,消毒,散列…我甚至在哪里开始?的更多相关文章

  1. ios – NSURLErrorDomain代码-1002下载pdf

    我正在尝试缓存一个网页,然后我可以使用UIWebView显示该网页.我在另一个NSURLSessionDataTask的完成块内的for循环(尝试缓存6个网页)中有相关的NSURLSessionDataTask.当我跑步时,我不断收到此错误:Ayy下载错误,数据:响应:(空)错误:错误域=NSURLErrorDomain代码=-1002“操作无法完成.(NSURLErrorDomain错误-1

  2. ios – 为什么Web Inspector向我显示“无检查应用程序”?

    什么可能是一个可能的原因,什么可以解决?解决方法我有同样的问题,这是因为我正在运行iOS8,通过将Safari更新到7.1来修复.

  3. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  4. ios – Xcode 10 Swift构建错误:“将非转义值转换为’T’可能允许它逃脱”

    ,block:@escaping@convention–>Void){@noescape现在默认为

  5. Swift学习之每日一tip (2)词法结构

    首字符之后,标识符允许使用数字和Unicode字符组合。用作可选类型修饰,左侧必须无空白。

  6. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  7. swift 字符串字面量转义字符

    1.转义特殊字符\0(空字符)、\(反斜线)、\t、\n(换行符)、\r(回车符)、\”(双引号)、\’(单引号)。

  8. 图书连载11:字符和字符串

    您可以将字符拼接为字符串。字符拼接后,将以字符串的形式存在,所以下面的代码是错误的:字符串Swift中的字符串由若干个字符构成,并且和Obejct-C中的字符串不太一样。这里使用offsetBy参数,以字符串的startIndex位置右移7位为起点,进行字符串的截取。所以您可以对字符串进行遍历,查找和打印字符串中的每个字符。

  9. Swift Web 开发之 Vapor - 入门一

    简介Vapor是一个基于纯Swift构建出的Web开发框架,目前可以运行在macOS和Ubuntu,用于构建出漂亮易用的网站或者API服务。组件VaporAuthSessionsCookiesRoutingVaporToolBoxFluentEngineHTTPURIWebSocketsSMTPLeafJSONConsoleTLSCryptoNodeSocksVapor使用SwiftPackageManager做依赖和包管理,不过以我个人目前的使用感受来看SwiftPackageManager还不是很好用

  10. Swift Web 开发之 Vapor - 模版 Leaf三

    Leaf作为Vapor官方提供的组件之一原生集成在Vapor中,Leaf模版文件以.leaf结尾,模版语法夹杂在HTML之间,我们可以直接使用而不需要引入其他外部依赖。#import()用来声明一个插入点在当前模版。这是[SwiftWeb开发之Vapor]系列的第三篇,说了说Vapor中自带的Leaf模版引擎,按照笔者目前的使用情况来看其实Leaf还不太成熟,虽然还有太多需要优化改进的地方,不过我相信之后一定会越来越好的。所以不要害怕,赶紧来写SwiftServerSide吧!

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部