当我使用PHP来设置HTML表单输入元素的值时,如果我在数据中没有任何空格,它就可以正常工作.
<input type="text" name="username"
<?php echo (isset($_POST['username'])) ? "value = ".$_POST["username"] : "value = \"\""; ?> />
Run Code Online (Sandbox Code Playgroud)
如果我输入"Jonathan"作为用户名,则会按预期重复给我.但是,如果我输入"Big Ted",我提交表格时只会重复"重复".
请注意,$_POST["Username"]变量是正确的; 当我使用PHP回应它时,它被设置为"Big Ted".
Bal*_*usC 25
引用它.否则,空间将成为属性分隔符,空格后的所有内容都将被视为元素属性.右键单击webbrowser中的页面并查看源代码.它应该看起来不像这样(也见语法高亮颜色):
<input value=Big Ted>
Run Code Online (Sandbox Code Playgroud)
而是这个
<input value="Big Ted">
Run Code Online (Sandbox Code Playgroud)
更何况当有人在他的名字中引用一个引号时(例如,你的代码对XSS 攻击敏感),这仍然会破裂.使用htmlspecialchars().
开球示例:
<input value="<?php echo (isset($_POST['username']) ? htmlspecialchars($_POST['username']) : ''); ?>">
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49687 次 |
| 最近记录: |