深度解析SQL注入 十大方式保护数据安全
保存【bǎo cún】SQLQueryStructure(也称作SQL注入⛲)失败”在【zài】CWE/SANS2月16号出版🎌的排名前🃏25位最危险编程错误清单上位【dān shàng wèi】列第二👏。原因是【yuán yīn shì】🕧:SQL注入式【zhù rù shì】🗨攻击对企业用💕户构成😺了巨大【le jù dà】的潜在【zài】威胁。这是因为一旦SQL注入式【zhù rù shì】🗨攻击成功【gōng】,就会导【jiù huì dǎo】💺致黑客【zhì hēi kè】侵入你的网络【de wǎng luò】,访问和💒毁坏数据并控制计算机【jī】🚧。
SQL注入是什么?
SQL注入式攻击的【gōng jī de】🌻原理非常简单🐋。当一款【dāng yī kuǎn】🍗应用软件进行【jiàn jìn háng】🐂用户数💼据输出时,就为恶【jiù wéi è】意用户入侵制造了机【zào le jī】会,从而导致输入【zhì shū rù】💲是作为💼SQL序列出现而不是数据【shì shù jù】。
举例来说,想象这样一行代码:
SELECT*FROMUsersWHEREUsername=’$username’ANDPassword=’$password
设计这行代码⬅是要显【shì yào xiǎn】示🌧”用户”框中用【kuàng zhōng yòng】户名和【hù míng hé】密码的【mì mǎ de】记录💜。使用网💿络界面的话,在提示👘输入用户名和【hù míng hé】密码的【mì mǎ de】时候,恶意用户可能🐾会键入【huì jiàn rù】:
1′or’1′=’1
1′or’1′=’1
然后产生这些的序列:
SELECT*FROMUsersWHEREUsername=’1′OR’1′=’1′ANDPassword=’1′OR’1′=’1′
这样黑【zhè yàng hēi】🍠客就将【kè jiù jiāng】整个OR条件成功的注入了验【rù le yàn】证流程🗼。更糟糕🐀的是,条件’1′=’1′总是正确的📇,因此这【yīn cǐ zhè】种【zhǒng】SQL序列通常会导🤧致黑客规避了【guī bì le】🗻验证流程🗼。
使用诸【shǐ yòng zhū】👢如【rú】”;”的字符🆑会在现有序列🚹的末尾另外产生一行序列🚹,作为现【zuò wéi xiàn】有序列🚹注释的【zhù shì de】一部分🔳,黑客可能会删【néng huì shān】除整个🌋表格或🥝者更改包含的【bāo hán de】🍂数据【shù jù】。黑客甚至能掌【zhì néng zhǎng】控基础【kòng jī chǔ】的操作🏩系统环【xì tǒng huán】🏫境,从而控制整个计算机【jī】🎳,将计算机【jī】🎳沦为供其驱使的肉鸡来攻击网络🎐中的其他计算🖼机【jī】。概括🤸来说SLQ注入式攻击的😪结果包【jié guǒ bāo】🐄括🤸:机【jī】密数据【shù jù】泄露,数据完【shù jù wán】🤐整性的【zhěng xìng de】损失【sǔn shī】,数据【shù jù】丢失【shī】,危及整【wēi jí zhěng】个网络。
如何防御SQL注入式攻击?
最重要【zuì chóng yào】的♉措施就是数据【shì shù jù】清理和验证。数据【jù】清理通常🎢会涉及⏸任何通过某项功能运【gōng néng yùn】🎢行的♉提交数【tí jiāo shù】据【jù】(比如【bǐ rú】MySQL的♉mysql_real_escape_string()功能🆙)来保证【lái bǎo zhèng】🖕任何存在风险🐋的♉字符(比如【bǐ rú】”‘”)不会传递到数【dì dào shù】🥙据【jù】的♉SQL序列。
验证有略微的不同【bú tóng】。数据验【shù jù yàn】😝证是要确保提【què bǎo tí】👿交的数据以希望的格【wàng de gé】式出现【shì chū xiàn】🧙。在最基🕶本的层📄面上,这包括【zhè bāo kuò】确保电子邮件地址包含”@”标识【biāo shí】,提交的【tí jiāo de】数据长度不能【dù bú néng】超出规定的最大长度【dà zhǎng dù】。验证经常会以🛴两种形式出现【shì chū xiàn】🧙:通过风【tōng guò fēng】🏸险黑名【xiǎn hēi míng】🛋单或多🖨余的字😄符和通过在指定情况🔸下才能🐞使用的【shǐ yòng de】字符的白名单,这更多【zhè gèng duō】会涉及编程人【biān chéng rén】员的工【yuán de gōng】作。虽然验证通常是在用😡户方面发生的行为,但黑客⏬可能会😯修改或🎧绕过验证,因此对【yīn cǐ duì】服务器上的数【shàng de shù】😙据加以👍验证也很重要【hěn chóng yào】🔯。
但是数据清理🍂和验证【hé yàn zhèng】还远远【hái yuǎn yuǎn】不够。以下是帮助用户阻止或缓解🤧SQL注入式【zhù rù shì】🦒攻击的十种方【shí zhǒng fāng】🌿法:
1.不要相信任何人:假设所♐提交的用户数【yòng hù shù】据都是【jù dōu shì】🥛存在问【cún zài wèn】🎪题的,对所有数据加以验证📀和清洁【hé qīng jié】。
2.不要使用可能🐥被规避【bèi guī bì】🥂的动态SQL:无论何🤦时都尽可能采【kě néng cǎi】用备好的报表,参数化🍄的查询【de chá xún】🥥或者存储的流【chǔ de liú】程【chéng】。
关键词:SQL注入,数据安全
阅读本文后您有什么感想? 已有 人给出评价!
- 0
- 0
- 0
- 0
- 0
- 0