如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:
$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)
这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:
INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)
可以采取哪些措施来防止这种情况发生?
今天早些时候,有人询问有关网络应用中输入验证策略的问题.
在撰写本文时,最重要的答案建议PHP只使用htmlspecialchars和mysql_real_escape_string.
我的问题是:这总是足够的吗?还有更多我们应该知道的吗?这些功能在哪里崩溃?
换句话说,现在最常用的消毒输入和/或输出技术是什么?工业(甚至只是个人使用)网站的人们用什么来解决这个问题?
我一直在阅读有关XSS的文章,我用文本和提交输入做了一个简单的表单,但是当我执行<script>alert();</script>它时,没有任何反应,服务器获取该字符串,就是这样.
我该怎么办才能让它变得脆弱?(然后我会学到我不应该做的事情)
干杯.