假设用户将一些PHP代码<?php //code here ?>
添加到输入文本标记中(在这种情况下它们不应该这样),将开始和结束标记转换为<
和{ {1}}或者他们会像在一个可疑的div中那样保持原状吗?
答案 0 :(得分:0)
用户输入只是附加到DOM中属性的原始文本。
在完成某些操作之前(例如提交的表单或读取属性并操纵它的JavaScript),它不是HTML,PHP或其他任何内容。
答案 1 :(得分:0)
原始文本将驻留在标准HTML输入中,并且不会执行用户输入的PHP代码。
但是,根据您的代码对其执行的操作(将其发送到数据库或Web服务),如果未正确清理,攻击者可能会执行攻击。
因此,您应该始终致力于在客户端和服务器端级别清理用户输入,尤其是在它触发数据库时。
不同的框架将支持消毒。在PHP中,您可以访问以下sanitization filters。
作为参考,您还应该了解其他攻击,例如SQL注入/ XSS。我建议查看OWASP前10名,其中概述了一些常见的网络攻击,并讨论了PHP filters。
我已经创建了一个反映用户输入的基本示例,如果攻击者设法在您的数据库中保存恶意代码,则可能会发生这种情况:
var text = document.getElementById("test").value;
eval(text);
&#13;
<input id="test" type="text" value="alert('I have access to you document cookies and could use a windows redirection here')" />
&#13;