- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PHP信息系统数据安全性分析与探讨
基于PHP信息系统数据安全性分析与探讨
摘要:随着信息化技术的推动和发展,信息系统安全日益重要,本文从信息系统数据合法性、MySQLi扩展的预处理机制、混淆式的密码算法等方面对信息系统数据安全性建设进行了分析及探讨。
Abstract: With the advancement and development of information technology, the security of information system is becoming more and more important. This paper analyzes the data security of information system from the aspects of information system data legitimacy, MySQLi extended preprocessing mechanism and confusing cryptographic algorithm.
关键词:PHP;数据安全;密码算法
Key words: PHP;data security;cryptographic algorithm
中图分类号:TP309.2 文献标识码:A 文章编号:1006-4311(2017)35-0153-02
0 引言
对于互联网企业,信息系统中承载着大量的数据,尤其是在线购物、网络银行等系统,对于安全性的要求非常严格。一旦出现安全漏洞,在严重情况下会导致数据泄露、篡改、窃取,造成系统瘫痪等问题,将会给企业带来不可估量的损失,所以说系统数据安全至关重要。接下来,本文将从以下几方面分析与探讨系统数据的安全性建设问题。
1 预防非法表单提交并验证数据合法性
任何软件通过HTTP协议都可以向Web服务器提交数据,可以更换表单中的控件,伪造另一个表单。假设域名为“http://”的服务器中有一个edit.php文件用于接收表单信息。原表单中有一组单选按钮,只能选择C#或PHP。如果编造一个HTML页面,把单选按钮替换为文本框,内容随意编写,并将表单提交给http:///edit.php,而服务器无法分辨真伪表单。要预防非法表单提交,比较好的方式是根据一个惟一的字符串或?r间戳生成一个令牌,并将这个令牌放在会话变量和表单隐藏域中。提交表单之后,检查两个令牌是否匹配。如果不匹配,就知道有人伪造表单向Web服务器发送数据。简略代码如下。
$token = md5(uniqid(rand(), true));$_SESSION[token]=$token;
再者Web表单利用浏览器限制了提交的内容,但无法限制服务器接收什么样的内容。因此,对于用户输入的内容,一定要验证数据的合法性。在对用户提交内容进行验证时,可以利用正则表达式实现复杂的验证规则。比如验证18位身份证号。在PHP中,可以使用preg_match()函数进行正则匹配,该函数的第1个参数表示正则表达式,第2个参数表示带匹配的字符串,返回值为匹配的次数。具体代码如下。
$id = $_POST[id]; //接收身份证号
if(!preg_match(^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$, $id)){ echo 身份证号格式不符合要求;} //验证身份证号是否合法
通过preg_match()函数对身份证号进行验证,当函数返回的匹配次数为0时,表示输入的字符串不符合规则。
2 防御SQL注入
SQL注入是开发人员未对用户输入的数据进行过滤就拼接到SQL语句中执行,导致用户输入的一些特殊字符破坏了原有SQL语句的逻辑,造成数据被泄露、篡改、删除等危险的后果。比如下列代码就存在SQL注入问题。该代码将来自外部的name数据直接拼接到SQL语句中,如果用户输入了单引号,则会将原有SQL语句中的单引号闭合,然后用户就可以将自己输入的内容当成SQL执行。
$name = $_POST[name];
$result=mysqli_query($link, SELECT * FROM `admin` WHERE `name`=$name);
假设用户输入“or 1=1”,SQL语句将变为SELECT * FROM `admin` WHERE `name`= or 1=1。此时就会通过or条件查询出admin表中所有的记录,造成了数据的泄露。接下来改进上述代码,操作数据库使用了MySQLi扩展的预处理机制,将SQL语句和数据分离,从本质上避免了SQL注入问题的发生,同时也更加高效,简略代码如下。
$na
文档评论(0)