当前位置: > 代码 > 基于 PHP 的信息系统数据安全性分析与探讨,php有什么安全问题?

基于 PHP 的信息系统数据安全性分析与探讨,php有什么安全问题?

基于 PHP 的信息系统数据安全性分析与探讨

php的安全问题是什么?当然,还有安全问题。PHP的语法结构非常类似于C语言和Prel语言。开发人员可以在任何文本编辑器中直接编辑PHP命令代码,而无需任何特殊的开发环境。在网页中,所有的PHP代码都放在“”之间。PHP有自己独特的安全问题。例如,全局变量不

php连接数据库的,密码安全性

只要其他人没有权限访问您的文件,例如从服务器、文件传输协议、网站背景文件等进行浏览,这种情况就不会发生。php中的变量(不包括网站漏洞)不仅可以从前台界面获得。 PHP应被视为大、中、小型非专业网站企业首选的网站建设编程语言。与ASP和JSP相比,PHP在许多方面更适合个人和小型企业开发。这主要是由于PHP本身的独特优势。接下来,下面的小编辑器将看看为什么PHP得到许多企业的支持。 PHP的,1界面做入库,记录路线和权限,判断路线网站是否符合 可以避免外部地址访问 2令牌相对单一,记录其知识产权,简单判断是否需要频繁访问,从而避免一些恶意访问。 程序不安全或不安全,只有编写程序的人有安全意识 中国80%的电子商务网站使用纯PHP 去看看ecshop 英美烟草的网站,用户交互部分都是PHP 足以解释这个问题 首先,网络服务器安全PHP实际上只是网络服务器的一个模块功能,所以首先要做的是确保网络服务器的安全 当然,为了安全,网络服务器必须首先确保系统的安全性,这就更进一步了。无限武进PHP可以与各种网络服务器相结合,这里只讨论阿帕奇。 强烈建议在chroot模式下安装引导。

php有什么安全问题?

php的安全问题是什么?当然,还有安全问题。PHP的语法结构非常类似于C语言和Prel语言。开发人员可以在任何文本编辑器中直接编辑PHP命令代码,而无需任何特殊的开发环境。在网页中,所有的PHP代码都放在“”之间。PHP有自己独特的安全问题。例如,全局变量不

php连接数据库的,密码安全性

基于 PHP 的信息系统数据安全性分析与探讨范文

摘要:随着信息技术的推广和发展,信息系统安全越来越重要。本文从信息系统数据合法性、MySQLi扩展预处理机制、混淆密码算法等方面对信息系统数据安全的构建进行了分析和探讨。

关键词:PHP;数据安全性;密码算法

0简介

对于互联网企业来说,信息系统承载着大量的数据,尤其是网上购物、网上银行等系统。安全要求非常严格。一旦出现安全漏洞,就会导致数据泄露、篡改、盗窃、系统瘫痪等严重问题,给企业带来无法估量的损失。因此,系统数据安全至关重要。接下来,本文将从以下几个方面对系统数据的安全建设进行分析和探讨。

1防止非法提交表格并验证数据合法性

任何软件都可以通过超文本传输协议向网络服务器提交数据。它可以替换表单中的控件并伪造另一个表单。假设域名为“的服务器有一个接收表单信息的edit.php文件。原始表单有一组单选按钮,只能选择C#或PHP。如果一个网页是伪造的,用一个文本框代替单选按钮,随意写下内容,然后把表格提交给http://www.xxx.com/edit.php,,而服务器不能区分真实的表格和虚假的表格。为了防止非法表单提交,更好的方法是基于唯一的字符串或时间戳生成令牌,并将令牌放在会话变量和表单隐藏字段中。提交表单后,检查两个令牌是否匹配。如果它们不匹配,您将知道有人伪造了表单以将数据发送到网络服务器。简短的代码如下。

$token = md5(uniqid(rand(),true));$ _会话[\'令牌\']= $令牌;

此外,网络表单使用浏览器来限制提交的内容,但是它们不能限制服务器接收的内容。因此,对于用户输入的内容,必须验证数据的合法性。当验证用户提交的内容时,复杂的验证规则可以通过使用正则表达式来实现。例如,可以验证18位数的id号。在PHP中,preg_match()函数可以用于常规匹配。函数的第一个参数表示正则表达式,第二个参数表示匹配的字符串,返回值是匹配的次数。具体代码如下。

$ id = $ _ POST[\' id \'];//如果(!idspninfopath \\u short \\u short \\u short \\u short \\u short \\u short \\u short \\u short \\u预匹配((\\ d { 6 })(\\ d { 4 })(\\ d { 2 })(\\ d { 2 })(\\ d { 3 })([0-9]| x)$ \',$ id)){回声\' id号格式不符合要求;}//验证身份证号码是否合法。通过预设匹配()功能验证身份证号码。当函数返回的匹配数为0时,输入字符串不符合规则。

2国防SQL注入

SQL注入(SQL injection)是开发人员将用户输入的数据拼接成不经过过滤就可以执行的SQL语句,这使得用户输入的一些特殊字符破坏了原有的SQL语句的逻辑,造成数据泄露、篡改、删除等危险后果。例如,以下代码存在SQL注入问题。该代码直接将外部的名称数据拼接到SQL语句中。如果用户输入单引号,原始的SQL语句中的单引号将被关闭,然后用户可以以SQL的形式执行自己输入的内容。

$ name = $ _ POST[\' name \'];$ result = MySQL _ query($ link,\" SELECT * FROM ` admin ` where ` name \' = \' $ name \' \";假设用户输入\" \' or1 =\' 1 \",则该SQL语句将被更改为从` admin \'中选择*,其中` name ` =\'\' or1 =\' 1 \'。此时,将通过or条件查询管理表中的所有记录,导致数据泄漏。接下来,上述代码得到了改进。操作数据库使用MySQLi扩展的预处理机制将SQL语句从数据中分离出来,从本质上避免了SQL注入问题的发生,也更加高效。简短的代码如下。

$ name = $ _ POST[\' name \'];//接收变量$ stmt = MySQL _ prepare($ link,\'从` admin \'中选择*,其中` name` =?\');//创建SQL语句模板。保留变量$name值使用参数“?”马克。MySQL _ stmt _ bind _ param($ stmt,\' s \',\' name);//将绑定变量$name值传递给参数(“?”标记),s表示$name数据类型。MySQL _ stmt _ execute($ stmt);//执行预处理语句。如果参数值不同,应用程序可以多次执行语句。

$ result = MySQL _ stmt _ get _ result($ stmt);//从预处理语句中获取结果集。

3防御XSS袭击

XSS(Cross Site Scripting)是由用户输入的数据未经过滤就拼接到网页上造成的,这导致攻击者输入JavaScript代码从系统用户那里窃取cookies,破坏页面结构,重定向到其他网站等。由于cookie用于存储系统中的用户登录信息,一旦cookie被盗,攻击者将在登录后获得受害用户的权利,导致一系列危险的后果。

当抵御XSS攻击时,htmlspecialchars()是普通文本数据的最佳方法。此函数可以转义字符串中的特殊字符,如双引号和尖括号,但默认情况下不会转义单引号。例如,以下代码具有XSS漏洞。

$ name = html specialchars($ _ POST[\' name \']);//从用户输入接收数据回显“”;//以超文本标记语言拼接到上述代码中。因为用户可以输入单引号,所以原始值属性可以用单引号关闭,然后可以添加一个事件属性(如onclick)以这种方式注入JavaScript代码,如下所示。假设用户输入\" \' onclick=\'alert(document.cookie)\",输出结果是:

浏览器执行上述代码后,攻击者注入的JavaScript代码将会运行,这将威胁到信息系统和用户的安全。由于XSS攻击的主要目的是窃取Cookie,所以可以为Cookie PHPSESSID设置HttpOnly属性,这是系统中最关键的Cookie。可以通过此属性阻止JavaScript访问cookie。

4安全数据存储

4.1混淆密码算法

当信息系统因漏洞而泄露时,管理者往往无法在第一时间知道一旦用户密码被盗,将会造成不可挽回的损失。因此,在信息系统的开发中,密码存储的安全性应该得到加强。此时,单个散列函数,如md5、sha等。函数通常用于摘要密码。它用于检查两个数据是否相同。例如,md5函数在操作后获得32个字符的信息摘要,不同数据生成的md5信息摘要是不同的。理论上,md5生成的字符串不能反过来获得原始数据。sha-1算法的安全性逐年下降,已被安全强度较高的sha-2所取代。Sha-2系列包括sha-224、sha-256、sha-384和sha-512。其中,sha-256和sha-512分别生成256位和512位哈希字符串,这是安全领域中常见的哈希应用。sha-256比md5更安全,也是sha系列中最快的算法。

然而,随着密码学研究的不断深入和计算机技术的快速发展,许多密码破解机构使用rainbow table等技术来计算和存储海量字符串的md5运行结果,导致直接在密码上运行md5不再满足安全要求。此时,混淆的密码算法可以用来提高破解难度。混淆之一是加密和存储密码时,MD5操作首先在密码上执行。密码的计算结果与salt相关联,即salt值,用于第二次或多次md5计算。此外,在存储密码时,通常会向不同的用户添加不同的盐,从而进一步增加密码破解的难度。函数md5(CONCAT(md5),盐值)两个操作的结果加上调料可以使INSERT INTO语句存储在数据库中。混淆类型2是使混淆类型1能够首先加密。然后使用函数str_split()根据字符将密文分成数组,使用函数array_map \'(顺序\',数组)将密文每个字符转换成ASCII码值。然后使用函数哈希(“sha256”,ASCII码值)逐一加密ASCII码值,最后生成2048个字符的密文。登录时,取出存储在数据库中的密码和salt,然后根据salt调用下面的password()函数对用户输入的密码进行操作或哈希函数操作。如果计算结果与数据库中存储的结果相同,登录将会成功。有许多令人困惑的加密方法,如基于md5和base64的混合加密算法,这些方法都可以增加彩虹表技术反向破解的难度。

函数密码($password,$ salt){返回md5(md5($password)。$盐);}

4.2加密扩展

对库md5()的功能有某些限制。PHP加密扩展库Mcrypt、OpenSSL和Mhash提供了更全面的加密和解密方法。其中,Mcrypt扩展库提供各种类型、算法和模式的加密和解密功能。Mcrypt支持的数据加密模式MCRYPT_MODE_ECB适用于短随机数据的加密,其他密钥也可以用这种模式加密。如果要加密安全级别较高的重要文件,可以选择MCRYPT_MODE_CBC加密模式。MCRYPT_MODE_CFB模式加密每个单独的字节,通常不用于加密引脚到节点的流。由于块运算算法,MCRYPT_MODE_NOFB具有更高的安全性。为了提高安全性,密钥可以加密。例如,$ key = hash (\'sha256 \',\'这是一个秘密密钥\',true),因此生成一个256位密钥。此时,Mcrypt的加密功能用于加密数据。解密函数中使用的算法、密钥、加密模式和其他参数必须与加密函数一致,否则数据将无法恢复。因此,mcrypt通常用于对称加密。openssl扩展使用openssl加密扩展包,封装了许多与加密和解密相关的PHP函数,极大地方便了数据的加密和解密。OpenSSL通常用于非对称加密。非对称加密的核心思想是使用一对相对密钥,分为公钥和私钥。私钥是自己安全保管的。公开了公钥。如果公钥用于加密数据,则只有相应的私钥可以用于解密数据。如果私钥用于加密数据,则只有相应的公钥可以用于解密数据。不对称加密克服了对称加密中的密钥存储问题,因为消息的发送者或接收者的密钥在对称加密中丢失。这会导致不安全的信息传输。Mhash是一个基于离散数学原理的不可逆php加密扩展库。它支持MD5、SHA、CRC32和其他哈希算法。它可以通过mhash()函数和mhash_keygen_s2k()函数创建信息摘要和检查值。

5结论意见

信息系统建设面临诸多安全隐患。其安全建设是一个全方位、长期的持续改进过程。本文从非法提交表单的角度对系统数据的安全性进行了分析和探讨,以期为用户提供一些方便。

参考:

[1]龚铭。基于PHP的数据安全方法与比较[。通讯世界,2015(05)。

[2]刘家栋。PHP网站的常见安全漏洞及防范措施[。《计算机与网络》,2016年(Z1)。

[3]焦先伟,闫品。基于PHP的招聘管理信息系统[。价值工程,2016(29)。