关于sql注入你不了解的痛处

SQL注入

所谓SQL注入,就是通过将SQL命令插入Web表单提交或输入域名或页面请求查询字符串,最终实现恶意SQL命令欺骗服务器。

通过下面的例子直观地了解更多关于SQL注入的知识:

有一个登录屏幕。在登录屏幕上,有两个文本框用于输入用户名和密码。当用户单击Login按钮时,将验证用户名和密码。验证后的SQL语句如下:

Select * from student where username=' and password=

如果可以检索数据,则验证已通过,否则验证未通过。

如果用户在用户名文本框中输入'或'1' = '1'或'1' = '1',经过验证的SQL语句变为:

选择* from student where username=' or '1' =' 1' and password=' 1'

如果用户在密码文本框中输入1'或'1' = '1',经过验证的SQL语句变为:

选择* from student where username= " and password='1' or '1'='1'

上面两个SQL语句的where条件总是有效的,所以验证总是有效的。

如果您在用户名文本框中输入Tom ';Drop table student——,则SQL语句变为:

[SQL]视图plaincopyprint ?

选择* from student where username=' Tom ';删除表student——'和password= "

这就变成了两条SQL语句,它们执行查询,然后删除学生表(用双级联表示注释)

如何防止SQL注入:

永远不要相信用户的输入。用户的输入可以通过正则表达式验证,也可以限制长度。转换单引号、双“-”等。

2. 不要使用动态汇编SQL,可以使用参数化SQL或直接使用存储过程进行数据查询访问

永远不要使用管理员授权的数据库连接。为每个应用程序使用单独的受限数据库连接

4. 不直接存储机密信息,加密或散列密码和敏感信息

5. 应用的异常信息应该提供尽可能少的提示,最好使用自定义错误消息包装原始错误信息

6. 使用一些工具或网络平台来检测SQL注入的存在

操作系统命令注入

OS命令注入类似于SQL注入,只是SQL注入用于数据库,OS命令注入用于操作系统。OS命令注入是在服务器上执行任意命令的能力。

如何防止操作系统命令注入:

1. 不要调用外部程序。例如,在UNIX系统上,有一个名为CGI的程序,它执行sendmail命令来发送消息。也许您的web应用程序也有发送邮件的能力。通过直接调用发送邮件到CGI程序非常简单。

2. 过滤和调整;,[,], |, <, >,以此类推

3.设置用户权限

跨站点脚本攻击

跨站点脚本攻击是指攻击者在web页面中插入客户端脚本(如JavaScript)。当用户浏览该网页时,脚本将在用户的浏览器上执行,以达到攻击者的目的,如获取用户的cookie、浏览恶意网站、携带木马等。

XSS攻击场景有以下两个方面:

1. 基于dom的XSS漏洞。攻击过程如下

汤姆找到了搜索。Asp页面在。net中有XSS漏洞,并进行了代码搜索。Asp如下

1.

2.

3.

4. 的结果

5 ....

6.

7.

汤姆建立了一个网站,http://badguy.com,接收“被盗”信息。然后,Tom构建了一个恶意url(如下),并通过某种方式将其发送给Monica(电子邮件、QQ)

http://victim.com/search.asp?术语= / /

如果Monica单击这个URL,嵌入URL的恶意Javascript代码将在Monica的浏览器中执行。然后莫妮卡在malicious.com网站上的饼干会

拥有自己银行账户的黑客马洛里知道,上面的URL可以用来转账。Mallory可以向我们的银行发送一个请求:http://bank.example/?Account = Bob & amount = 1000000 & for = Mallory。但是请求来自Mallory,而不是Bob,而且不能对他进行身份验证,因此请求不能工作。

马洛里想到了使用CSRF进行攻击。他建立了自己的网站,并把以下代码:。诱导鲍勃通过广告等方式访问他的网站。当Bob访问站点时,上面的url从Bob的浏览器发送到银行,请求连同Bob浏览器中的cookie一起发送到银行服务器。在大多数情况下,请求失败是因为他请求Bob的身份验证信息。

但是,如果Bob刚好访问了他的银行,并且浏览器和银行网站之间的会话还没有过期,浏览器的cookie就包含Bob的身份验证信息。然后悲剧发生了,url请求得到了响应,钱从Bob的账户转到了Mallory的账户,Bob当时并不知道。之后,鲍勃发现账户缺钱了。即使他去银行查看日志,他也只能发现自己确实有一个合法的转账请求,而且没有受到攻击的痕迹。马洛里可以拿到钱,然后逍遥法外。

如何防止CSRF跨站请求伪造:

1. 对于web站点,将持久授权方法(如cookie或HTTP授权)切换为临时授权方法(在每个表单中提供隐藏字段)。

2. “双提交”饼干。此方法仅适用于Ajax请求,但可以将其用作全局修复,而无需更改大量表单。如果在表单发布之前JavaScript代码正在读取授权cookie,则应用跨域限制规则。什么是限制性跨域规则?跨域限制规则是,如果服务器需要包含对授权coo的请求

posted @ 2019-05-08 10:29  赵sir阿  阅读(165)  评论(0编辑  收藏  举报
友情链接: 3721家电维修 管道疏通 家电清洗 家电维修平台