禁止页面上所有文本区域的字符
Ban character from all textareas on the page
我遇到了一个问题。只要我输入这个小f***r-->'<--在我通过AJAX发送到数据库的文本区域中,它停止了工作。例如,如果我输入:
我是个小侏儒,很高兴认识你。拥抱我!
数据库将只接收:
我是一个小侏儒,我
所以。。我可以将页面上的所有文本区域限制为喜欢A-Z+ÅåÖ+吗?,+其他经常使用的角色不会毁了我的东西?我将onchange
用于AJAX请求,并使用keyup
的另一个事件侦听器使其在Safari上工作,如果这对任何人来说都很重要的话!
SQL注入漏洞,明白了。我很害怕,有事情要做。感谢到目前为止所有的答案。
注意
我可以看到你开始了,这太棒了!你总是要找到一个bug来学习新东西,现在你正在学习SQL注入。如果我能提出一些建议,你最好从PHP开始。正确的方法,它会帮你一卡车。
您的PHP脚本(将这些数据插入数据库的)没有正确清理。
如果不看到您的关联代码,我们将无能为力。但我认为你在使用mysql_*
/mysqli_*
函数?我们将弃用前一个,并从PHP7起删除!
您应该开始学习以下两种准备好的语句类型之一:
- PDO
- Mysqli准备的报表
根据我的假设,您想要转义字符串:
$data = mysql_real_escape_string($_POST['data']);
尽管如此,仍然有办法绕过上述逃生途径;您的数据库仍然可以通过SQL注入进行黑客攻击,这不是您想要的。
正如Armadan所指出的,为了支持我上面的陈述,mysql_real_escape_string()
在某些情况下仍然可以通过,请阅读以下内容:
- 绕过mysql_real_eescape_string()的SQL注入
- SQL注入攻击时绕过mysql_escape_string
根据您提供的代码,您将使用prepare()
和execute()
:
if(isset($_GET['comment1'])) {
if($mysqli = connect_db()) {
$insertcomment1 = $_GET['comment1'];
$stmt = $mysqli->prepare("UPDATE result SET c1=?");
if ( false===$stmt ) {
die('prepare() failed: ' . htmlspecialchars($mysqli->error));
}
$stmt->bind_param('s', $insertcomment1);
// execute
if(!$stmt->execute()){
die('execute() failed: ' . htmlspecialchars($mysqli->error));
}
// handle the rest here.
}
}
你会做类似上面的事情。您最好阅读以下与使用MySQLi准备的语句相关的内容:
prepare()
bind_param()
execute()
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 将文本插入光标所在的文本区域
- 离开页面导航后保留文本区域内容
- Javascript-在文本区域中断,但不在段落中中断
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 测试文本区域中的特定文本格式
- 文本编辑后,append函数不适用于文本区域
- 如何在ReactJs中链接下拉列表和文本区域
- I'我试图在文本区域中进行特定的输入,调用特定的javascript函数,但没有成功;不起作用
- 使用JSON文件中的变量(字符串)填充文本区域
- JavaScript-如果以前不存在文本,如何从文本区域删除新行
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- 如何为动态创建的文本区域中输入的值更新ng模型
- 延迟高亮显示文本区域中的文本
- 将字母添加到文本区域的末尾
- TinyMCE在新添加的文本区域